0

我收到了一个非常简单的类,其中包含一些像这样编译没有问题的文件夹:

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

在类文件夹中,我有一个名为OasisEMSecImp.class的 .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.OasisEMSecImp

在类的开始没有使用。因此,它不能从属于包的类中调用,也不能集成到我当前的项目中,该项目非常复杂,并且在每个类中都使用包声明。

解决方法是,我创建了一个新的非常简单的应用程序,它通过命令行工作,可以通过 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 回答