2015-05-11 3 views
3

Итак, мы снова идем. Моя голова стучит на моем компьютере около нескольких часов, я не могу понять, что делать. На моем локальном ПК я запускаю код Java от Intellij Idea. Оно работает. Теперь я должен создать файл jar, чтобы он мог использовать его на каком-то удаленном сервере. Я добавил все библиотеки, банки, которые нужны моей программе в настройках проекта (добавлены библиотеки в разделе «Артефакты»). Но он не работает на удаленном сервере. Что импортирует мои потребности программы:ClassNotFoundException: org.docx4j.openpackaging.exceptions.Docx4JException

import org.docx4j.dml.CTBlip; 
import org.docx4j.jaxb.XPathBinderAssociationIsPartialException; 
import org.docx4j.openpackaging.exceptions.Docx4JException; 
import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
import org.docx4j.openpackaging.parts.PartName; 
import org.docx4j.openpackaging.parts.relationships.RelationshipsPart; 
import org.docx4j.relationships.Relationship; 

import javax.xml.bind.JAXBException; 
import java.io.File; 
import java.util.List; 

Ошибка:

Exception in thread "main" java.lang.NoClassDefFoundError: org/docx4j/openpackaging/exceptions/Docx4JException 
Caused by: java.lang.ClassNotFoundException: org.docx4j.openpackaging.exceptions.Docx4JException 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:323) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:268) 
Could not find the main class: Main. Program will exit. 

Так проблема в создании баночки? Я что-то пропустил?

+1

Посмотрите на сгенерированную банку. Имеет ли он какую-либо информацию о том, где найти org.docx4j.openpackaging.exceptions.Docx4JException класс? –

+2

Скорее всего, проблема связана с созданной банкой. Самый простой способ проверить - извлечь свою банку и проверить, имеются ли необходимые библиотеки. – vinay

+0

Да, файл jar составляет около 40 МБ, и все библиотеки находятся внутри. – Daria

ответ

1

org.docx4j.openpackaging.exceptions.Docx4JException находится в файле docx4j.jar, поэтому убедитесь, что (и все зависимости docx4j) находятся в вашем пути к классам.

+0

Спасибо. Моя мечта иметь банку включала всю внешнюю банку в один файл, разбитый на данный момент. Я не могу это решить. Один из способов избежать этой ошибки теперь, похоже, создает банку с манифестом, описанным для внешних банок. – Daria

+0

Так что я решил. Я выиграл Intellij Idea). Ты заставил меня взглянуть на правильный путь. благодаря – Daria

1

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

Я попробовал эти из них:

  • docx4j-3.1.0.jar
  • docx4j-3.2.1.jar

По какой-то причине, Midnight Commander не мог открыть их (нажав) с первой попытки и сообщив «Непоследовательный архив extfs». Проблема была решена с помощью баночки отдыха

# run in a directory containing just single original docx4j jar file 
unzip docx4j-3.2.1.jar 
rm -r docx4j-3.2.1.jar 
jar cf docx4j-3.2.1.jar * 

Теперь новый сосуд открыт в МЦ без проблем (по крайней мере в моем случае) и его классы загружаются и java.lang.NoClassDefFoundError не брошенные больше.

UPDATE

JIC, я только что проверил, который JDK банку я использовал принадлежите.

Это OpenJDK 64-бит 1.7.0_79, Монетный двор Linux 17.

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