2013-03-22 124 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

我希望這可以幫助別人。並感謝您的幫助。