2011-07-18 12 views
2

私はtruezipに奇妙な問題があります。 私は次のコードを実行します。私はちょうどそれを実行truezipの問題 - デバッグ時に、奇妙な例外がスローされます

TFile.setDefaultArchiveDetector(new TArchiveDetector("zip")); 
    String zipFile = "c:\\test\\test.zip"; 
    TFile dstZip = new TFile(zipFile); 
    TFile newFile = new TFile("c:\\test\\c.txt"); 

    try { 
     newFile.cp_rp(dstZip); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

- それは[OK]を実行します。

しかし、私がデバッグすると、 "ブレークポイント"(1つも設定されていません)がラインで満たされています TFile.setDefaultArchiveDetector(new TArchiveDetector( "zip"));以下のスタックと

Thread [main] (Suspended (exception ClassNotFoundException))  
URLClassLoader$1.run() line: not available [local variables unavailable]  
AccessController.doPrivileged(PrivilegedExceptionAction<T>, AccessControlContext)  line: not available [native method] 
Launcher$AppClassLoader(URLClassLoader).findClass(String) line: not available 
Launcher$AppClassLoader(ClassLoader).loadClass(String, boolean) line: not available 
Launcher$AppClassLoader.loadClass(String, boolean) line: not available 
Launcher$AppClassLoader(ClassLoader).loadClass(String) line: not available 
JSE7.<clinit>() line: 35  
FileDriver.getPriority() line: 57 
FsDriverLocator$Boot.<clinit>() line: 85  
FsDriverLocator.get() line: 59 
TArchiveDetector.<init>(FsDriverProvider, String) line: 125 
TArchiveDetector.<init>(String) line: 105 
TArchiveDetector.<clinit>() line: 80  
Test.main(String[]) line: 12  

2行目の引数は次のとおりです。 にjava.lang.ClassNotFoundException:今java.nio.file.Path

、私は本当にありませんこのインターフェースはjava.nio2の一部ですが、私が知る限り、TrueZipはこれを必要としません。

TrueZIPは、Java 7の新しいNIOクラスを使用しようとしているようです

おかげ

答えて

2

それ動的JSE7というクラスをロードし、おそらく戻ったときに、古典的なNIOへの落下によってそうするようですそれは失敗する。

例外がスローされても、それはTrueZIP自体によって処理され(捕まえられ、処理されます)、ユーザーは何かが間違っていたことに気づくことはありません。

問題のコードは、de.schlichtherle.truezip.JSE7という名前のクラスにあります。

(Java 7にのみ存在する)クラスjava.nio.file.Pathにアクセスしようとする静的イニシャライザブロックがあります。 NoClassDefFoundError(通常はクラスが存在しないため)が得られると、フィールドAVAILABLEfalseに設定されます(新しいNIOドライバがロードされなくなります)。

+1

JSE7クラスは、TrueZIPがプラットフォームファイルシステムにアクセスするためのTrueZIPドライバファイルでNIO.2 APIを使用できるかどうかをテストするために使用されます。これはバグではなく、機能です。 –