/ / IVY / JAR ERROR - java.lang.NoClassDefFoundError: org / apache / poi / ss / usermodel / Row - java, apache, jar, apache-poi, ivy

IVY / JAR ERROR - java.lang.

Здравейте Знам, че този въпрос е задаван многократно, но съм опитвал всички предложени!

Кодът ми работи отлично в Eclipse, но искам да изградя jar и да пусна през командния ред в Unix.

В моя зависим ivy.xml изброих моите зависимости:

    <dependencies>
<dependency org="org.apache.xmlbeans" name="xmlbeans" rev="2.6.0"/>
<dependency org="org.apache.poi" name="poi" rev="3.11" conf="default" />
<dependency org="org.apache.poi" name="poi-ooxml" rev="3.11" conf="default" />
<dependency org="org.apache.poi" name="poi-ooxml-schemas" rev="3.11" conf="default" />
</dependencies>

Но когато изпълня моя буркан, получавам следната грешка:

Изключение в нишката "main" java.lang.NoClassDefFoundError: org / apache / poi / ss / usermodel / Row

Знам, че трябва да имате poi-ooxml за ss, обаче, аз го споменах в зависимостите си от бръшлян.

Защо все още получавам тази грешка?

Всяка помощ ще бъде много оценявана.

Отговори:

1 за отговор № 1

Предполагам, че вашият буркан липсва в манифеста на класа. Опитайте следното:

<target name="build" depends="test" description="Create executable jar archive">
<ivy:retrieve pattern="${dist.dir}/lib/[artifact]-[revision](-[classifier]).[ext]"/>

<manifestclasspath property="jar.classpath" jarfile="${jar.file}">
<classpath>
<fileset dir="${dist.dir}/lib" includes="*.jar"/>
</classpath>
</manifestclasspath>

<jar destfile="${jar.file}" basedir="${build.dir}/classes">
<manifest>
<attribute name="Main-Class" value="${jar.main.class}" />
<attribute name="Class-Path" value="${jar.classpath}" />
</manifest>
</jar>
</target>

Забележки:

  • Бръшлянът изтегли Задачата се използва за поставяне на зависимостите в директорията за разпространение успоредно с изградения буркан
  • Най- manifestclasspath задача е полезен трик за създаване на правилните относителни пътища за евентуално дълъг списък от зависимости