0

私は問題なくこのようにコンパイルするいくつかのフォルダを持つ非常に単純なクラスを受け取りました:

javac -classpath /home/DigestJavaLinux/classes DigestClass.java

クラスフォルダには、 OasisEMSecImp.classという1つの.classファイルがあります。

クラスをインポートして別のプロジェクトでそのメソッドを使用する必要がある場合でも、このメソッドは銀行がトランザクションをチェックするためのダイジェスト文字列を生成し、合計およびその他のパラメーターを受け取ります。

追加した場合

パッケージダイジェストクラス;

クラスの始めにそれが機能しない、私はエラーを受け取ります:

digestclass/DigestClass.java:136: cannot find symbol
symbol  : class OasisEMSecImp
location: class DigestClass
        OasisEMSecImp digest= new OasisEMSecImp();
        ^
digestclass/DigestClass.java:136: cannot find symbol
symbol  : class OasisEMSecImp
location: class DigestClass
        OasisEMSecImp digest= new OasisEMSecImp();
                                  ^
2 errors

更新: これはファイルです。パッケージ宣言なしでコンパイルします。

package digestclass;

import java.*;

class DigestClass {
    private String varMerchant;
    private String varStore;                    // Store ID
    private String varTerm;             // Term ID
    private String varTotal;            // Monto de Transaccion
    private String varCurrency;             // Codigo de Moneda
    private String varOrder_id;         // Order Id
    private String varDigest;                       // Valor de Digest


    public DigestClass(String varMerchant, String varStore, String varTerm,
            String varTotal, String varCurrency, String varOrder_id,
            String varDigest) {
        super();
        this.varMerchant = varMerchant;
        this.varStore = varStore;
        this.varTerm = varTerm;
        this.varTotal = varTotal;
        this.varCurrency = varCurrency;
        this.varOrder_id = varOrder_id;
        this.varDigest = varDigest;
    }

    public String generateDigest(){
        OasisEMSecImp digest= new OasisEMSecImp();
        varDigest = digest.getDigest(this.varTotal,this.varOrder_id,this.varMerchant,this.varStore,this.varTerm,this.varCurrency);
        return varDigest;
    }

}

なんで ?これを修正する方法は?お時間をいただき、誠にありがとうございます。

4

1 に答える 1

0

これが問題の原因であり、それを回避するために私がしたことであると私は理解しています。

John Skeetが指摘したように、私が使用しようとしていたクラス

OasisEMSecImp

デフォルトのパッケージで最初にコンパイルされました。つまり、コンパイル時に、宣言

パッケージ example.package.OasisEMSImp

クラスの初めには使用されませんでした。結果として、パッケージに属するクラスから呼び出すことはできず、非常に複雑ですべてのクラスでパッケージ宣言を使用する現在のプロジェクトに統合することはできません。

回避策は、コマンドラインを介して機能し、exec を介してアプリケーションから呼び出すことができる、新しくて非常に単純なアプリケーションを作成することでした。次に例を示します。

Process process = Runtime.getRuntime().exec("java " +
                                                    "-Djava.library.path=/home/ernesto/DigestJavaLinux/lib " +
                                                    "-classpath /home/ernesto/workspace/digestUserTest/bin:/home/ernesto/workspace/digestUserTest/lib/digestgenerator.jar: " +
                                                    "ARGUMENTS");

このリンクのおかげで、これが状況であることがわかりました

これが誰かに役立つことを願っています。そして、あなたの助けに感謝します。

于 2013-03-26T16:33:17.007 に答える