Вот что у меня есть.
У меня есть папка MyJava, в которой все содержится.
MyJava/src/a/HelloWorld.java MyJava/src/b/Inner.java MyJava/bin/ MyJava/manifest.txt
HelloWorld.java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
Inner myInner = new Inner();
myInner.myInner();
}
}
Внутренний.java:
public class Inner {
public void myInner() {
System.out.println("Inner Method");
}
}
Манифест.txt:
Main-Class: HelloWorld
Сначала я компилирую .javas в .class:
javac -d bin src/a/HelloWorld.java src/b/Inner.java
Теперь я помещаю их в файл .jar jar cvfm myTwo.jar manifest.txt bin/*.class
теперь я пытаюсь запустить банку: java -jar myTwo.jar
И я получаю:
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
...
Could not find the main class: HelloWorld. Program will exit.
Я знаю, что это довольно простая проблема, что мне не хватает?
pkg.name
и имяMyClass
, он должен быть в пути apkg/name/MyClass.java
. Я рекомендую, если ваши классы находятся в одном и том же пакете (кажется, в пакете по умолчанию), они должны быть в одном каталоге. Есть способы сделать это по-разному, но я предлагаю вам пока придерживаться самого простого способа. - person Andrew Thompson   schedule 15.05.2013