さて、次のファイル ツリーを取得しました。
<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 で必要なクラスを検索するようにしたいだけです。私はこれを何度も見てきました。