2013-03-22 63 views
0

我收到一个非常简单的类与某些文件夹,编译这样没有问题包声明时创建的jar:无法加入

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

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

UPDATE: 这是文件。它编译没有包声明:

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

} 

为什么?如何解决这个问题? 非常感谢您的时间。

+2

您将包声明添加到哪个类?请注意,如果a)您的源代码布局符合您的包布局,并且b)您使用IDE构建代码,直至您对Java更加充满信心,那么您会发现生活更简单。 – 2013-03-22 17:21:52

+0

你好,即时将包声明添加到DigestClass.java。我试图添加功能到我们已经在eclipse,intellij中设置的一个大项目,以及在Adobe Flex中的flex部分。我在后端使用spring + hibernate。这个问题是让类工作的另一种方式,因为我永远不能让OasisEMSecImp类被Eclipse或Ant识别:http://stackoverflow.com/questions/15351012/unable-to-compile-from-ant-but -works-from-the-command-line-why。它非常令人沮丧。因为它非常简单,我会将类文件添加到问题中。谢谢 – Ernest 2013-03-22 17:50:19

+1

'OasisEMSecImp'只是默认的包? (不幸的是,这是一个糟糕的主意。) – 2013-03-22 17:53:07

回答

0

这就是我所理解的问题的原因,我做了什么来解决它。

像约翰·斯基特指出,I类试图用

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

我明白这是形势感谢this link

我希望这可以帮助别人。并感谢您的帮助。