Java 为什么我得到一个ClassNotFoundException?

Java 为什么我得到一个ClassNotFoundException?,java,classnotfoundexception,Java,Classnotfoundexception,使用Ubuntu 这是我的密码: import java.io.*; import java.net.*; import se.opendataexchange.ethernetip4j.clx.*; class PLCServer { public static void main(String argv[]) throws IOException { // IP address of the ethernet card String ENBT

使用Ubuntu

这是我的密码:

import java.io.*;
import java.net.*;
import se.opendataexchange.ethernetip4j.clx.*;

class PLCServer
{
    public static void main(String argv[]) throws IOException
    {
        // IP address of the ethernet card
        String ENBTIP = "192.168.10.14";
        DataInputStream socketReader = null;
        PrintStream socketWriter = null;
        ControlLogixConnector test = new ControlLogixConnector(ENBTIP,44818);

        // Debugging code
        System.out.println(InetAddress.getByName(ENBTIP).isReachable(10000));
    }
}
以下是我是如何编译的:

javac-classpath/home/nick/Java/PLC/ethernetip4j-0.2.jar PLCServer.Java
,它不返回任何错误

以下是输出:

Exception in thread "main" java.lang.NoClassDefFoundError: se/opendataexchange/ethernetip4j/clx/ControlLogixConnector
    at PLCServer.main(PLCServer.java:13)
Caused by: java.lang.ClassNotFoundException: se.opendataexchange.ethernetip4j.clx.ControlLogixConnector
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 1 more

我在这里遗漏了什么吗?

请确保在运行代码时也指定了类路径。如果在向java类路径添加所需的所有内容后仍然存在问题,请检查那些缺少的类是否确实位于指定的JAR/位置中。还可以启用一些调试标志,以提供有关类加载等的更多信息

比如说

java -classpath /home/nick/Java/PLC/ethernetip4j-0.2.jar:. PLCServer

确保在运行代码时也指定了类路径。如果在向java类路径添加所需的所有内容后仍然存在问题,请检查那些缺少的类是否确实位于指定的JAR/位置中。还可以启用一些调试标志,以提供有关类加载等的更多信息

比如说

java -classpath /home/nick/Java/PLC/ethernetip4j-0.2.jar:. PLCServer

那么您是如何运行代码的呢?我使用的是
JavaPLCServer
当您运行代码时,您应该指定类的名称,而不是源文件的名称,并且您还必须在类路径中包含库。尝试
java-classpath/home/nick/java/PLC/ethernetip4j-0.2.jar:。PLCServer
还要确保指向的是jar文件而不是zip文件。我刚刚编译了您的示例代码,没有任何问题。您是如何运行代码的?我使用
java PLCServer
运行代码时,您应该指定类的名称,而不是源文件的名称,并且还必须在类路径中包含库。尝试
java-classpath/home/nick/java/PLC/ethernetip4j-0.2.jar:。PLCServer
还要确保指向的是jar文件而不是zip文件。我刚刚编译了您的示例代码,没有任何问题。现在我在这里包括了类路径,这就是我得到的
nick@ubuntu:~/Java/PLC$Java-classpath/home/nick/Java/PLC/ethernetip4j-0.2.jar PLCServer错误:无法找到或加载主类PLCServer
@CupONoodles请确保在类路径。我真傻,我忘了
:。
非常感谢现在我把类路径包括在这里,这就是我得到的
nick@ubuntu:~/Java/PLC$Java-classpath/home/nick/Java/PLC/ethernetip4j-0.2.jar PLCServer错误:无法找到或加载主类PLCServer
@CupONoodles请确保还包括当前目录
在类路径中。我真傻,我忘了
:。
谢谢