2010-03-31 5 views
1

Я создал файл банку, который включает в себя мой .class, файл манифеста и зависимостей файлов фляги какОшибка при запуске файла фляги

jar cfmv custadvicejar.jar mymanifest.txt Gchreportsautomation Bean Utils 
jxl.jar ojdbc14.jar 

где

custadvicejar.jar - is my jar file name 

    mymanifest.txt contains 
    Main-Class: Gchreportsautomation.GCH_Home_Loan_Data_Cust_Advice_DAO 

«Gchreportsautomation» это имя пакета содержит " GCH_Home_Loan_Data_Cust_Advice_DAO.class»[Этот класс моей отправной точкой моего приложения]

Gchreportsautomation/ GCH_Home_Loan_Data_Cust_Advice_DAO.class 

"Bean" это имя пакета содержит "GCH_Home_Loan_Data_Cust_Advice_Bean.class"

Bean/ GCH_Home_Loan_Data_Cust_Advice_Bean.class 

"Utils" это имя пакета содержит "Utils.class"

Utils/ Utils.class 

и

jxl.jar and ojdbc14.jar are jar files required for my application which i kept 
    in parent directory of the .class files like 

D : \ Excalcreation

/Gchreportsautomation/ GCH_Home_Loan_Data_Cust_Advice_DAO.class 
    /Bean/ GCH_Home_Loan_Data_Cust_Advice_Bean.class 
    /Utils/ Utils.class 
    /jxl.jar 
    /ojdbc.jar 

при запуске приложения я получил ошибку как

Caused by: java.lang.ClassNotFoundException: jxl.format.CellFormat 

я знаю, что это из-за ошибки класса пути. как его исправить.

Если я нажимаю свой файл jar, приложение должно запускаться. пожалуйста, предоставьте решение.

ответ

0

Если вы не против иметь другие файлы jar, ваш манифест может указать, какие другие банки должны быть в пути к классам при вызове банки. См:

http://java.sun.com/docs/books/tutorial/deployment/jar/downman.html

Это может быть проще, чем в том числе файлы из банок в вашем банке.

Если вы добавляете в свою банку строку класса-пути: которая указывает местоположение банок (по-моему, по отношению к исполняемой банке), тогда вы должны быть установлены.

0

Вы не можете включать банки в баночках, не вытаскивая ClassLoader трюки для доступа к ним. То, что вы можете сделать, это развязать внутренние банки и поместить содержащиеся файлы в свою основную банку. Есть инструменты, которые помогут вам в этом. Смотрите также: Classpath including JAR within a JAR

Чтобы сделать это вручную, выполните следующие действия:

jar -xf jxl.jar 
jar -xf ojdbc14.jar 
jxl-dirs=`jar -tf jxl.jar | sed -e 's/\/.*//' | sort | uniq | grep -v META-INF` 
ojdbc14-dirs=`jar -tf ojdbc14.jar | sed -e 's/\/.*//' | sort | uniq | grep -v META-INF` 
jar cfmv custadvicejar.jar mymanifest.txt Gchreportsautomation Bean Utils $jxl-dirs $ojdbc14-dirs 

где $jxl-dirs являются каталогами верхнего уровня, которые Вы получили, запустив первый jar -xf jxl и $ojdbc14-dirs являются каталогами верхнего уровня, которые Вы получили, выполнив jar -xf ojdbc14.jar отказ META-INF. (Это не сработает, хотя, если какой-либо из этих каталогов верхнего уровня содержит пробелы.)

+0

Можете ли вы рассказать мне, как это сделать. мне нужно срочно. , пожалуйста, помогите как можно скорее. – Manu

+0

мое приложение в MS-WindowsXp, как я могу использовать команду grep. – Manu

+0

Вышеприведенная команда предназначена для среды unix? – Manu

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