2013-03-22 4 views
0

я получил очень простой класс с некоторыми папками, компилируется как это без проблем:удалось создать банку при добавлении объявления пакета

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

В папке классов у меня есть один .class файл с именем OasisEMSecImp.class

Как мне понадобиться импортировать класс и использовать его метод в другом проекте, метод генерирует строку дайджеста для проверки банковской транзакции и принимает итоговые и другие параметры.

Если я добавлю

упаковка 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 как языке. –

+0

Здравствуйте, я добавляю объявление пакета в DigestClass.java. Я пытаюсь добавить функцию к большому нашему проекту, который уже установлен в eclipse, intellij и flex в adobe flex. Im использует пружину + спящий режим на заднем конце. Этот вопрос - это другой подход, чтобы заставить класс работать, потому что я никогда не мог распознать класс OasisEMSecImp Eclipse или Ant: http://stackoverflow.com/questions/15351012/unable-to-compile-from-ant-but -works-from-the-command-line-why. Это очень удручающее.! я добавлю файл класса к вопросу, так как он очень прост.Спасибо – Ernest

+1

Является ли 'OasisEMSecImp' только пакетом по умолчанию? (К сожалению, это плохая идея). –

ответ

0

Это то, что я понимаю, было причиной проблемы и что я сделал, чтобы обойти ее.

Как Джон Скит отметил, класс я пытался использовать

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

Надеюсь, это поможет кому-то. И спасибо за вашу помощь.

Смежные вопросы