所以这是交易 - 我下载了一个jar文件,我需要与Allen Bradley PLC进行通信。当然,我设置了CLASSPATH,并期望能够从jar文件中的一个类创建一个带有构造函数的程序,并按照我的方式进行。事实并非如此。
这是我的CLASSPATH:
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编译)。
答案 0 :(得分:1)
您的导入语句import home.nick.Java.PLCProgram.ethernetip4j.*;
似乎表明项目中 jar 的位置。
这是不正确的。
相反,它是指引用jar的包结构,解析为您尝试使用的类(或类集,如果使用通配符)。
如果您不知道类ControlLogixConnector
所在的包,则可以解压缩jar,目录结构应该很明显。 (@allergic在评论中指出它是se.opendataexchange.ethernetip4j.clx
)。
通过使用JAD之类的实用程序或类似工具从jar中反编译.class
文件,您可以更加精确。尽管如此,将jar导入任何IDE应该可以解决问题 - jar中的类应该在包树的树视图中分解。