私は、2番目のjarファイル内のクラスを使用するjarファイルを持っています。しかし、最初のjarファイルを実行すると、クラスが見つからないという例外が発生します。問題のトラブルシューティング方法に関するドキュメントが見つかりません。Java JARはClass-Pathでクラスをロードできませんか?
私は2つの.jarファイルMyApp.jarとsqljdbc42.jarを持っています。これらの両方の.jarファイルは同じディレクトリにあります。
MyApp.jarは主に以下のコードを有する。MyApp.jarため
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
マニフェストは、以下を有する:
Manifest-Version: 1.0
Main-Class: com.mycompany.myapp.MyApp
Class-Path: sqljdbc42.jar
<blank line>
com.microsoft.sqlserver.jdbc.SQLServerDriver
クラスは、JAR sqljdbc42.jarです。 MyApp.jarが実行されると
は、次の例外が発生します。Java 8を用いて
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
、IntelliJのに内蔵、7zipをでジャーを開くことによって、マニフェストの内容を検証しました。 これをどのように(一見単純で基本的なJava JARコンセプトの)作業を得ることができるかアドバイスをいただければ幸いです。
1)あなたは "Eclipse Neonを" IDEを使用してjarファイルを生成できます。
'java -classpath" MyApp.jar; sqljdbc42.jar "com.mycompany.myapp.MyApp'を実行すると動作しますか?私はこれがあなたが望むものではないことを知っていますが、原因の特定に役立つかもしれません。 –
@KeesKistうわー、うまくいきます!私が以前に試していたのは、動作しなかった 'java -classpath" slqjdbc42.jar "-jar MyApp.jar'でした。私は2つの違いがわからないのですか?今はバットファイルでテストするプロジェクトを送っていますが、これに基づいて問題を解決する方法を知りたいですか?私は同じsqljdbc42.jarファイルを使用するように構築する必要がある他のものがあります。 – Wige