我有下面这个问题
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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我跑步时,我正在接受
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.
Run Code Online (Sandbox Code Playgroud)
你完全不清楚为什么要尝试从Tomcat目录运行一个控制台应用程序,但基本上它找不到你的类.
您应该com在当前目录下有一个目录,并且Caller.class该目录中有一个文件.如果不是这样,您需要弄清楚如何编译代码并修复它.
我的猜测是你刚刚运行:
javac Caller.java
java com.Caller
Run Code Online (Sandbox Code Playgroud)
这将在当前目录中创建类文件.有两种方法可以解决这个问题.你可以使用-d:
javac -d . Caller.java
java com.Caller
Run Code Online (Sandbox Code Playgroud)
或者您可以将源文件移动到反映包结构的结构中,即com自己创建一个目录:
mkdir com
move Caller.java com
javac com\Caller.java
java com.Caller
Run Code Online (Sandbox Code Playgroud)
或者甚至更好,您可以从二进制文件中分离出源:
mkdir src\com
move Caller.java src\com
javac -d bin src\com\Caller.java
java -cp bin com.Caller
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5140 次 |
| 最近记录: |