Здравейте Знам, че този въпрос е задаван многократно, но съм опитвал всички предложени!
Кодът ми работи отлично в 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 задача е полезен трик за създаване на правилните относителни пътища за евентуално дълъг списък от зависимости