- PR -

jarファイルにjarファイルを含めるとjava.lang.SecurityExceptionが発生する

1
投稿者投稿内容
wyvern
会議室デビュー日: 2008/07/18
投稿数: 2
投稿日時: 2008-07-18 12:26
現在、java1.5.0_16でSQLServer2000にDBアクセスするバッチプログラムを作成しています。
作成したプログラムをANTでjarファイルにして実行しましたが、
Exception in thread "main" java.lang.SecurityException
という例外が発生して困っています。
jarファイルからではなく、classファイルから起動するとこの例外は発生しません。

例外は以下のように出力されます。
コード:
Exception in thread "main" java.lang.SecurityException: invalid SHA1 signature file digest for com/microsoft/sqlserver/jdbc/CharacterStreamSetterArgs.class
        at sun.security.util.SignatureFileVerifier.verifySection(SignatureFileVerifier.java:438)
        at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:231)
        at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:176)
        at java.util.jar.JarVerifier.processEntry(JarVerifier.java:233)
        at java.util.jar.JarVerifier.update(JarVerifier.java:188)
        at java.util.jar.JarFile.initializeVerifier(JarFile.java:325)
        at java.util.jar.JarFile.getInputStream(JarFile.java:390)
        at sun.misc.URLClassPath$JarLoader.getInputStream(URLClassPath.java:620)
        at sun.misc.Resource.cachedInputStream(Resource.java:58)
        at sun.misc.Resource.getByteBuffer(Resource.java:113)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:249)
        at java.net.URLClassLoader.access0(URLClassLoader.java:56)
        at java.net.URLClassLoader.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)



SQLServer2000へのアクセスには
http://www.microsoft.com/downloads/details.aspx?FamilyId=C47053EB-3B64-4794-950D-81E1EC91C1BA&displaylang=en
からドライバをダウンロードし使用しています。
また、sqljdbc.jarをjarファイルに含めています。
例外の内容からsqljdbc.jarに含まれているmanifest.mfファイルの内容が、
作成したjarファイルに含まれていないのが原因かと思い、
ANTのビルドファイルに「filesetmanifest="merge"」を含めてjarファイルを作成しましたが、
例外の発生は解消できませんでした。

現在、jarファイルにSQLServerのドライバのjarファイルを含めないようにして、
起動時にclassパスをするように逃げていますが、
やはりすべてのファイルをjarファイルにまとめたいと思っています。
解決策をご存知の方教えていただきたいと思います。
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2008-07-21 02:56
wyvernさん、こんにちは。
引用:
invalid SHA1 signature file digest for com/microsoft/sqlserver/jdbc/CharacterStreamSetterArgs.class


が問題なのですよね。

[ メッセージ編集済み 編集者: Kissinger 編集日時 2008-07-21 02:58 ]
wyvern
会議室デビュー日: 2008/07/18
投稿数: 2
投稿日時: 2008-07-22 11:27
Kissingerさん御返答ありがとうございます。
Kissingerさんのおっしゃるとおり「invalid SHA1 signature file...」が解決されれば
私の疑問も解消されるかと思います。

signature fileというものを含むjarファイルを、jarファイルでまとめるときに
この例外が発生すると考えていますが、一般的にどのように解決するものなのでしょうか?

質問がはっきりしなくて申し訳ありません。
makoto
常連さん
会議室デビュー日: 2004/05/05
投稿数: 40
投稿日時: 2009-01-04 11:04
SQL Server 用JDBCドライバ:JSQLConnectの無償版(1ユーザ用)は下記サイト:

http://support.climb.co.jp:9000/

download - JSQLConnect フォルダにあります。

ファイル名は: JSQLConnect5.85_Single_Free.zipです。

サポートはありませんのでよろしくお願いします。
朝日奈 ありす
ベテラン
会議室デビュー日: 2007/10/28
投稿数: 57
お住まい・勤務地: 北の都
投稿日時: 2009-01-07 22:53
たぶん、これが参考になるかも

http://docs.sun.com/app/docs/doc/820-0500/geziy?l=Ja&a=view

Oracleで出た問題のひとつ。
1

スキルアップ/キャリアアップ(JOB@IT)