1

さて、次のファイル ツリーを取得しました。

<appfolder>
- MyApp.jar
- lib/
-    log.jar
-    someother.jar
-    someother.jar
-    someother2.jar
- config.properties
- otherfiles.extension

このアプリケーションを起動する方法を何十も試しました。MyApp には以下が含まれます

MANIFEST.MF:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.7.0_06-b24 (Oracle Corporation)
Main-Class: myapp.Main
Class-Path: MyApp.jar lib/*

java -jar MyApp.jarを呼び出すと、常に lib/log.jar 内のどのクラスもロードできなかったと表示されます。

以下は、私が試した組み合わせの一部です。

- *.jar lib/*
- *.jar lib/*.jar
- *.jar ./lib/*.jar
- ./*.jar lib/*.jar
- *.jar ./lib/*.jar
- tbc

何も機能しませんでした。Java は常に、lib/log.jar 内のクラスが見つからないことを教えてくれます

私の次の試みは、コマンドラインからクラスパスを指定することでした。

java -cp "MyApp.jar:lib/*" myapp.Main

しかし、それでもうまくいきません。この場合、Java は myapp.Main クラスが見つからなかったと言います。

私が見つけた方法はどれもうまくいかなかったので、私は何か完全に間違っていると思います。lib/log.jar のクラスを myApp.jar に入れて起動すると、動作します。しかし、それでは解決できません。

何か案は?

編集: すべての lib jar に名前を付けたくありません。ClassLoader が ClassPath で必要なクラスを検索するようにしたいだけです。私はこれを何度も見てきました。

4

3 に答える 3

2

Linux の場合、次のようなことができるはずです。

java -cp MyApp.jar:lib:someotherjar.jar myapp.Main

(オプションで!) 「メイン」を含む .jar に「-jar」を使用するか、パスと jar ファイル (修飾されたパス名を持つ .jar ファイル) の任意の組み合わせをクラスパスに追加できます。

ここにJavaのドキュメントがあります

そして、ここにやや良い説明があります

于 2012-08-26T23:38:23.580 に答える
0

システム変数、または経由で lib ディレクトリをクラスパスに追加します

SET CLASSPATH=%CLASSPATH%;MYAPP/LIB;.

そして、java -jar MyApp.jar

于 2012-08-26T23:35:17.340 に答える