我在下面有这个项目
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.
答案 0 :(得分:5)
您完全不清楚为什么要尝试从Tomcat目录运行控制台应用程序,但基本上它无法找到您的类。
您当前目录下可能有一个com
目录,该目录中有一个Caller.class
文件。如果情况并非如此,您需要弄清楚您是如何编译代码并进行修复的。
我的猜测就是你刚刚开始运行:
javac Caller.java
java com.Caller
这将在当前目录中创建类文件。有两种方法可以解决这个问题。您可以只使用-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
答案 1 :(得分:-1)
运行.class
命令时,必须确保将java
文件的位置添加到类路径中(以便执行可以找到已编译的类)。
所以,转到com
目录,然后使用:
java -cp . Caller
答案 2 :(得分:-1)
这意味着该类不存在。请。尝试再次构建项目并将其部署在Web服务器中。