事情是这样的 - 我下载了一个 jar 文件,我需要它与 Allen Bradley PLC 进行通信。自然地,我设置了 CLASSPATH,并希望能够使用 jar 文件中的一个类的构造函数创建一个程序,然后按照我的方式进行。事实并非如此。
这是我的类路径:
nick@ubuntu:~/Java/PLC Program$ echo $CLASSPATH
/home/nick/Java/PLC Program/ethernetip4j-0.2.jar
这是我的程序中的代码:
ControlLogixConnector test = new ControlLogixConnector(ENBTIP,44818);
我编译并得到以下错误:
nick@ubuntu:~/Java/PLC Program$ javac PLCServer.java
PLCServer.java:13: error: cannot find symbol
ControlLogixConnector test = new ControlLogixConnector(ENBTIP,44818);
^
symbol: class ControlLogixConnector
location: class PLCServer
PLCServer.java:13: error: cannot find symbol
ControlLogixConnector test = new ControlLogixConnector(ENBTIP,44818);
^
symbol: class ControlLogixConnector
location: class PLCServer
2 errors
我的程序和 jar 文件位于同一目录中。我是否需要导入 jar 文件中的任何包,或者我是否缺少其他完全不同的东西?
提前致谢
编辑:
这是我的代码:
import java.io.*;
import java.net.*;
import se.opendataxchange.ethernetip4j.clx.ControlLogixConnector;
class PLCServer
{
public static void main(String argv[]) throws IOException
{
// IP address of the ethernet card
String ENBTIP = "192.168.10.14";
ControlLogixConnector test = new ControlLogixConnector(ENBTIP,44818);
}
}
我收到错误消息,说 se.opendataexchange.ethernetip4j.clx.ControlLogixConnector 不存在并且 ControlLogixConnector 对象不存在(使用 javac PLCServer.java 编译)。
最佳答案
您的导入语句import home.nick.Java.PLCProgram.ethernetip4j.*;
似乎指示了项目中jar的位置。
这是不正确的。
相反,它旨在引用 jar 的包结构,解析为您尝试使用的类(或类集,如果使用通配符)。
如果您不知道ControlLogixConnector
类驻留在哪个包中,您可以解压该jar,通过目录结构应该很明显。 (@allergic 在评论中指出它是 se.opendataexchange.ethernetip4j.clx
)。
您可以通过使用 JAD 等实用程序或类似工具从 jar 中反编译 .class
文件来获得更精确的结果。不过,将 Jar 导入任何 IDE 应该可以解决问题 - jar 中的类应该按包在 TreeView 中分解。
关于java - 设置类路径后是否需要从 jar 文件导入包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14160563/