В Java: не удалось найти основной класс - PullRequest
0 голосов
/ 23 ноября 2011

Когда я написал автономный клиент и попытался выполнить его, это дает мне следующие ошибки:

Запуск в Windows:

Exception in thread "main" java.lang.NoClassDefFoundError: TestClient
Caused by: java.lang.ClassNotFoundException: TestClient
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: TestClient.  Program will exit.

Это в Linux

Exception in thread "main" java.lang.NoClassDefFoundError: TestClient (wrong name: com/tata/bayer/service/TestClient)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: TestClient.  Program will exit.

Теперь я получаю

C:\Softwares\apache-tomcat-6.0.33\webapps\tkweb-ws-12.0\WEB-INF\classes\com>java com.tata.bayer.service.TestClient
Exception in thread "main" java.lang.NoClassDefFoundError: com/tata/bayer/service/TestClient
Caused by: java.lang.ClassNotFoundException: com.tata.bayer.service.TestClient
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: com.tata.bayer.service.TestClient  Program will exit.

Ответы [ 2 ]

3 голосов
/ 23 ноября 2011

Похоже, вы должны работать

java com.tata.bayer.service.TestClient

из каталога, содержащего "com", с соответствующей иерархией каталогов, в конечном итоге приводящей к TestClient.class.

Вы не показали, компилируете ли вы этот код самостоятельно или он был вам передан. Если вы сами его компилируете, вы обычно должны организовать исходный код так, чтобы он также отражал структуру пакета. Таким образом, вы можете запустить:

javac com/tata/bayer/service/*.java
java com.tata.bayer.service.TestClient

Или, может быть:

# Keep source and class files separate...
javac -d bin com/tata/bayer/service/*.java
java -classpath bin com.tata.bayer.service.TestClient

Если это не поможет, пожалуйста, предоставьте более подробную информацию.

0 голосов
/ 23 ноября 2011

Похоже, вы хотите использовать com/tata/bayer/service/TestClient, а не TestClient. Попробуйте использовать полный путь.

...