私はJava1.6、Eclipse、およびAntを使用しています。
以下は、jarファイルを作成して実行するための私のターゲットです。
<!-- 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>
問題は、このjarを(Antまたはコマンドライン経由で)実行すると、次のエラーが発生することです。
Exception in thread "main" java.lang.NoClassDefFoundError: net/xeoh/plugins/base/impl/PluginManagerFactory
[java] at plugins.PluginLoader.<clinit>(Unknown Source)
知っておくと便利なことがいくつかあります。
クラスパスを印刷すると、必要なすべてのJARがそこにあることが示されます。また、EclipseのGUIバージョンのクラスパスも表示されます。
私は(EclipseとAntの両方を介して)プロジェクトをクリーンアップしようとしましたが、役に立ちませんでした。
欠落していると思われるライブラリ.jarは、.jar内の.jarではありません(これは一般的な問題のようです)。
これが唯一のエラーです。他のクラスはライブラリを大丈夫だと思っているようです...