2013-05-15 4 views
1

Вот что у меня есть.NoClassDefFoundError при компиляции программирования HelloWorld в банку

У меня есть папка мой '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(); 
    } 
} 

Inner.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. 

Я знаю, что это довольно простая проблема, чего мне не хватает?

+0

Это не является частью пакет. – dwjohnston

+0

Почему два класса в разных каталогах? –

+0

Ну ... Я играю с разработкой, как я собираюсь что-то сделать. Хотя что-то подобное использует пакеты. – dwjohnston

ответ

2

Если вы просматриваете файлы внутри вашего .JAR, вы заметите, что ваши скомпилированные классы находятся внутри каталога bin (и поэтому не могут быть найдены, так как ваш манифест ссылается на класс на верхнем уровне).
Измените команду jar... так:

jar cvfm myTwo.jar manifest.txt -C bin . 

Смотрите также "Creating a JAR File" section на Java Tutorial.

0

Одним из решений является добавить следующую строку в manifest.txt

Class-Path: bin/ 

Затем вы можете использовать команду «ваш» для создания баночки:

jar cvfm myTwo.jar manifest.txt bin/*.class 
Смежные вопросы