gpt4 book ai didi

java - 由java.lang.NoClassDefFoundError :引起

转载 作者:行者123 更新时间:2023-12-02 00:34:05 25 4
gpt4 key购买 nike

我有下面的程序

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.

最佳答案

根本不清楚为什么您要尝试从 Tomcat 目录运行控制台应用程序,但基本上它找不到您的类。

您的当前目录下可能应该有一个 com 目录,并且该目录中有一个 Caller.class 文件。如果情况并非如此,您需要弄清楚如何编译代码并修复它。

我的猜测是你刚刚运行:

javac Caller.java
java com.Caller

这将在当前目录中创建类文件。有两种方法可以解决这个问题。您可以只使用-d:

javac -d . Caller.java
java com.Caller

或者您可以将源文件移动到反射(reflect)包结构的结构中,即自己创建一个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

关于java - 由java.lang.NoClassDefFoundError :引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8265419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com