2015-04-03 3 views
0

Я разрабатываю приложение Java, но получаю java.lang.NoClassDefFoundError. Я проверил все, что я могу думать:Java No Class Def error

  • Файл банки существует в каталоге и не 0 байт
  • Файл баночки имеет те же права, как и все другие файлы JAR (я показал это с Ls -la cmmand)
  • Файл jar содержит точный класс, который считается отсутствующим (я показал это на выходе с помощью команды jar tf)
  • jar-файл указан в командной строке в параметре -cp У меня есть изменил порядок банок в пути класса, а другой
  • j А.Р. файлы распознаются - в противном случае остальные части программы не будут работать
  • Это же баночка файл я строю против
  • Проект работает в затмении на моем ноутбуке

Это просто не работай в моей малине.

Мне нужно добавить что-то еще к моей контрольной переписке с ошибками ClassNotFound. У кого-нибудь есть предложения?

У меня есть список результатов проверок, которые я провел ниже.

[email protected] ~/personal_services $ java -cp /home/pi/personal_services/Console/Console.jar:/home/pi/personal_services/lib/Library.jar:/home/pi/personal_services/lib/JavaCommon.jar:/home/pi/personal_services/lib/sqlite-jdbc-3.7.2.jar:/home/pi/personal_services/lib/commons-codec-1.10.jar metcarob.com.personalservices.console.Main /home/pi/personal_services/Console/ConsoleSettings.xml ListNodes 
EVALUATING ListNodes 
CONNECTING 
Exception in thread "ConnectionThread" java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64 
    at metcarob.com.common.network.xmlprotocol.ConnectionSocketContainer.ProcessIncommingMessages(Unknown Source) 
    at metcarob.com.common.network.xmlprotocol.Connection.processIncomingMessages(Unknown Source) 
    at metcarob.com.common.network.xmlprotocol.Connection.runDER(Unknown Source) 
    at metcarob.com.common.thread.CloseableThread.run(Unknown Source) 
RUNNING ListNodes 
Closing connection 
Closing connection 
DONE 
[email protected] ~/personal_services $ jar tf /home/pi/personal_services/lib/commons-codec-1.10.jar | grep Base64 
org/apache/commons/codec/binary/Base64.class 
org/apache/commons/codec/binary/Base64InputStream.class 
org/apache/commons/codec/binary/Base64OutputStream.class 
[email protected] ~/personal_services $ ls -la /home/pi/personal_services/lib/commons-codec-1.10.jar 
-rw-r--r-- 1 pi pi 284184 Apr 3 20:54 /home/pi/personal_services/lib/commons-codec-1.10.jar 

Благодаря Роберт

+0

довольно интересно ... какая версия jdk использует банку? – user390525

+0

Вы проверили http://stackoverflow.com/questions/34413/why-am-i-getting-a-noclassdeffounderror-in-java – Abhi

+0

Малина Pi имеет версию java «1.8.0» Java (TM) SE Runtime Окружающая среда (build 1.8.0-b132) Клиентская виртуальная машина Java HotSpot (TM) (сборка 25.0-b70, смешанный режим) в eclipse на моем ноутбуке Я строю против jdk 1.7. Должен ли это? Это не похоже на другие файлы jar. – Robert3452

ответ

0

я обнаружил причину моей проблемы.

У меня есть основное приложение в: Console.jar который использовал utiliy банку: JavaCommon.jar , который используется: Викисклад кодек-1.10.jar

Когда я построил JavaCommon.jar я предоставил путь класса, который содержал commons-codec-1.10.jar, и он скомпилирован без проблем

Когда я построил Console.jar, я предоставил путь к классу, который содержал JavaCommon.jar, но не содержал commons-codec-1.10.jar и скомпилирован без Проблема

Тогда, когда я запустил приложение, я предоставил classpath, которые содержат все ящики, но у меня все еще есть NoClassDefFoundError Exception

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