Вызвано java.lang.NoClassDefFoundError: - PullRequest
0 голосов
/ 25 ноября 2011

У меня есть это ниже proram

package com;

    import java.io.PrintStream;
    import java.net.URL;
    import java.net.URLConnection;

    public class Caller
    {
      public static void main(String[] args)
      {
        try
        {
          URL url = new URL("http://localhost:8080/Test/Ravi.jsp");
          connection = url.openConnection();
        }
        catch (Exception ioe)
        {
          URLConnection connection;
          System.err.println("IOException: " + ioe.getMessage());
        }
      }
    }

Когда я запускаю это, я получаю

C: \ Program Files \ Apache Software Foundation \ apache-tomcat-6.0.33 \ webapps\ Test \ WEB-INF \ classes> java com.Caller

Exception in thread "main" java.lang.NoClassDefFoundError: com/Caller
Caused by: java.lang.ClassNotFoundException: com.Caller
        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.Caller.  Program will exit.

Ответы [ 3 ]

5 голосов
/ 25 ноября 2011

Не совсем понятно, почему вы пытаетесь запустить консольное приложение из каталога Tomcat, но в основном оно не может найти ваш класс.

Вероятно, у вас должен быть каталог com под вашимтекущий каталог и файл Caller.class в этом каталоге.Если это не так, вам нужно выяснить, как вы скомпилировали код, и исправить его.

Мой думаю , что вы только что запустили:

javac Caller.java
java com.Caller

Это создаст файл класса в каталоге current .Есть два способа исправить это.Вы можете просто использовать -d:

javac -d . Caller.java
java com.Caller

Или вы можете переместить исходный файл в структуру, которая отражает структуру пакета, т.е. создать com каталог себя:

mkdir com
move Caller.java com
javac com\Caller.java
java com.Caller

Или, что еще лучше, вы можете отделить источник от двоичных файлов:

mkdir src\com
move Caller.java src\com
javac -d bin src\com\Caller.java
java -cp bin com.Caller
0 голосов
/ 25 ноября 2011

Это означает, что класс не существует.Pls.попробуйте снова построить свой проект и развернуть его на веб-сервере.

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

Вы должны убедиться, что добавили местоположение вашего .class файла в ваш путь к классам при запуске команды java (чтобы при выполнении можно было найти ваш скомпилированный класс).

Итак, перейдите в каталог com и используйте:

java -cp . Caller
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...