2013-01-04 49 views
0

所以这里是交易 - 我下载了一个jar文件,我需要与Allen Bradley PLC进行通信。当然,我设置了CLASSPATH,并希望能够使用jar文件中的某个类的构造函数创建一个程序,并按照我的方式进行操作。此情况并非如此。设置类路径后,是否需要从jar文件导入包?

这里是我的CLASSPATH:

[email protected]:~/Java/PLC Program$ echo $CLASSPATH 
/home/nick/Java/PLC Program/ethernetip4j-0.2.jar 

这里是我的程序代码:

ControlLogixConnector test = new ControlLogixConnector(ENBTIP,44818); 

我编译,并得到了以下错误:

[email protected]:~/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进行编译)。

+2

import语句? –

+5

你需要'导入'所需的类。在进一步深入研究之前,您可能想退后一步,了解Java的工作方式;它可以节省一些时间。 –

+1

该jar可能包含几个包。使用导入。 – xagyg

回答

1

您的进口语句import home.nick.Java.PLCProgram.ethernetip4j.*;似乎表明您的项目中jar的位置。

这是不正确的。

取而代之,它意味着引用jar的包结构,解析为要尝试使用的类(或使用通配符的类集合)。

如果您不知道类ControlLogixConnector所在的包是什么,那么您可以解压缩该jar,并且它应该在目录结构中显而易见。 (@allergic指出,它是se.opendataexchange.ethernetip4j.clx)。

通过使用JAD等工具反编译jar文件中的.class文件,您可以获得更加精确的结果。然而,将Jar导入到任何IDE中都应该做到这一点 - jar中的类应该通过包中的树视图进行分解。