添加包声明时无法创建jar

时间:2013-03-22 17:19:13

标签: java package javac

我收到了一个非常简单的类,其中包含一些文件夹,可以毫无问题地编译:

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

在classes文件夹中,我有一个名为 OasisEMSecImp.class

的.class文件

我怎么需要导入类并在另一个项目中使用它的方法,该方法为银行生成摘要字符串以检查交易,并接收总数和其他参数。

如果我添加

package digestclass;

到班级的开头它不起作用,我得到错误:

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;
    }

}

为什么?怎么解决这个问题? 非常感谢你的时间。

1 个答案:

答案 0 :(得分:0)

这就是我所理解的问题的原因以及我采取的措施。

就像John Skeet指出的那样,我正在尝试使用

OasisEMSecImp

最初是在默认包中编译的,这意味着在编译时,声明

package 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");

由于this link

,我理解这种情况

我希望这有助于某人。谢谢你的帮助。