0

これが取引です - Allen Bradley PLC と通信するために必要な jar ファイルをダウンロードしました。当然のことながら、私は CLASSPATH をセットアップし、jar ファイル内のクラスの 1 つからコンストラクターを使用してプログラムを作成し、自分のやり方で進めることができると期待していました。そうではありませんでした。

ここに私のクラスパスがあります:

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 でコンパイルされた) というエラーが表示されます。

4

1 に答える 1

1

importステートメントは、プロジェクト内 のjarimport home.nick.Java.PLCProgram.ethernetip4j.*;の場所を示しているようです。

これは正しくありません。

代わりに、jarのパッケージ構造を参照し、使用しようとしているクラス(またはワイルドカードを使用している場合はクラスのセット)に解決することを目的としています。

クラスがどのパッケージにあるかわからない場合はControlLogixConnector、jarを解凍できます。これは、ディレクトリ構造から明らかです。(@allergicはコメントでそれがそうであると指摘しましたse.opendataexchange.ethernetip4j.clx)。

.classJADなどのユーティリティを使用して、jar内からファイルを逆コンパイルすることで、さらに正確にすることができます。ただし、Jarを任意のIDEにインポートすることでうまくいくはずです。ただし、jar内のクラスは、パッケージごとにツリービューで分割する必要があります。

于 2013-01-04T16:25:47.803 に答える