为什么我得到ClassNotFoundException?

时间:2013-01-07 15:25:22

标签: 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 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

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:3)

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

所以例如......

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