Код: Выделить всё
package com.ds;
class c{...}
public class Main{...}
Когда я пытаюсь запустить .class с помощью java com.ds.Main, это не работает! Он говорит, что не может найти или загрузить класс.
Когда я пытаюсь запустить .class с помощью java Main, он запускается, но я получаю такую ошибку :
Код: Выделить всё
Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: com
/DatingService/Main)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
После небольшого исследования я предполагаю, что javac не будет разделять классы внутри файла, по крайней мере, по умолчанию? Я знаю, что многие IDE, такие как Eclipse и IntelliJ, разделяют классы на два отдельных файла .class (я могу это подтвердить). Итак, есть ли способ сделать это с помощью Javac? Я использую javac в качестве компилятора для IntelliJ, поэтому должен быть какой-то способ, если это не будет сделано до компиляции.
Если я удалю пакет, я смогу прекрасно запустить Java Main. скомпилирован только один файл .class. Так что я немного растерян и немного в отчаянии. Я стараюсь полностью избегать изменения своего кода или разделения классов на два отдельных файла .java.
Подробнее здесь: https://stackoverflow.com/questions/192 ... lass-files