Dlaczego Ant mówi „NoClassDefFound”, gdy mój plik JAR znajduje się w ścieżce klasy?
Używam Java 1.6, Eclipse i Ant.
Oto mój cel tworzenia pliku jar i jego uruchamiania:
<!-- Settings -->
<property file="build.properties" />
<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*.jar" />
</path>
<!-- Compile -->
<target name="compile">
<mkdir dir="${classes.dir}" />
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false">
<classpath refid="classpath" />
</javac>
</target>
<!-- Package .jar -->
<target name="jar">
<mkdir dir="${jar.dir}" />
<jar destfile="${jar.dir}/App.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="main.App" />
</manifest>
</jar>
</target>
<!-- Run .jar -->
<target name="run">
<java jar="${jar.dir}/App.jar" fork="true" />
</target>
Problem polega na tym, że po uruchomieniu tego słoika (przez Ant lub wiersz polecenia) pojawia się błąd:
Exception in thread "main" java.lang.NoClassDefFoundError: net/xeoh/plugins/base/impl/PluginManagerFactory
[java] at plugins.PluginLoader.<clinit>(Unknown Source)
Kilka rzeczy, które warto wiedzieć:
Kiedy drukuję ścieżkę klasy, pokazuje, że wszystkie wymagane pliki JAR są tam; pokazuje również wersję ścieżki klasy Eclipse w GUI.
Próbowałem oczyścić projekt (zarówno przez Eclipse, jak i Ant) bezskutecznie.
Brak biblioteki .jar, która wydaje się brakowaćnie .jar w .jar (co wydaje się być częstym problemem).
To jedyny błąd. Inne klasy wydają się znaleźć bibliotekę w porządku ...