2

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();
    }

私がそれを実行するとき-それは大丈夫です。

しかし、デバッグすると、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はこれを必要としません。

何か案が?

ありがとう

4

1 に答える 1

2

TrueZIPはJava7で新しいNIOクラスを使用しようとしているようです。

これ、と呼ばれるクラスを動的にロードしJSE7、失敗したときにクラシックNIOにフォールバックすることで実現しているようです。

したがって、例外がスローされたとしても、TrueZIP自体によって処理(キャッチされ、実行)され、ユーザーは何かがうまくいかなかったことに気付くことはありません。

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

java.nio.file.Pathクラス(Java 7にのみ存在する)にアクセスしようとする静的初期化ブロックがあります。NoClassDefFoundError(通常はクラスが存在しないため)を取得すると、static finalフィールドAVAILABLEはに設定されますfalse(これにより、新しいNIOドライバーがロードされなくなります)。

于 2011-07-18T06:24:49.110 に答える