2011-06-17 35 views
2

我有一个非常简单的程序,我试图将一个目录添加到一个新的zip文件中。代码:调用cp_rp方法时抛出的TrueZip异常

public class Encrypt { 
    public static void main(String[] args) { 
     TFile srcFile = new TFile(args[0]); 
     TFile destFile = new TFile("/home/myuser/archive.zip"); 
     try { 
      TFile.umount(); 
     } catch (FsSyncException e1) { 
      e1.printStackTrace(); 
     } 

     try { 
      if (destFile.isArchive() || destFile.isDirectory()) 
       destFile = new TFile(destFile, srcFile.getName()); 
      srcFile.cp_rp(destFile); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     try { 
      TFile.umount(); 
     } catch (FsSyncException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

这几乎是代码从here。 例外:

Jun 17, 2011 12:10:26 PM de.schlichtherle.truezip.fs.sl.FsDriverLocator$Boot <clinit> 
WARNING: No provider available for class de.schlichtherle.truezip.fs.spi.FsDriverService 
Exception in thread "main" java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) 
Caused by: java.util.ServiceConfigurationError: file (unknown file system scheme - check run time class path configuration) 
     at de.schlichtherle.truezip.file.TArchiveDetector.newController(TArchiveDetector.java:341) 
     at de.schlichtherle.truezip.fs.FsDefaultManager.getController(FsDefaultManager.java:75) 
     at de.schlichtherle.truezip.fs.FsDefaultManager.getController(FsDefaultManager.java:65) 
     at de.schlichtherle.truezip.fs.FsFailSafeManager.getController(FsFailSafeManager.java:59) 
     at de.schlichtherle.truezip.file.TBIO.getInputSocket(TBIO.java:291) 
     at de.schlichtherle.truezip.file.TBIO.cp0(TBIO.java:229) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:193) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:183) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:183) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:183) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:183) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:183) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:183) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:183) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:183) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:183) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:183) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:183) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:183) 
     at de.schlichtherle.truezip.file.TBIO.cp_r0(TBIO.java:183) 
     at de.schlichtherle.truezip.file.TBIO.cp_r(TBIO.java:154) 
     at de.schlichtherle.truezip.file.TFile.cp_rp(TFile.java:3161) 
     at Encrypt.main(Encrypt.java:38) 
     ... 5 more 

我无法找到与此相关的例外项目页面或其他页面上的任何东西。有没有人见过这个?我正在使用TrueZip 7.1.4。

回答

2

没错,运行时依赖于您要访问的文件系统驱动程序模块。

例如如果您要访问ZIP文件,则需要在运行时类路径上具有模块TrueZIP Driver ZIP(truezip-driver-zip)和TrueZIP驱动程序文件(truezip-driver-file)的JAR。

0

问题是项目中缺少JAR依赖项:truezip-driver-file-jse7-7.2-beta-3.jar。你可以从here得到它。很难找到所有需要的文件。

+0

可能会更好地添加一个简单的jar与所有依赖项:http://repo1.maven.org/maven2/de/schlichtherle/truezip/truezip-samples/7.0/truezip-samples-7.0-jar-with-dependencies 。罐。 – Dan

0

如果您使用的是Maven,则可以将以下dependencies添加到您的pom.xml文件中,例如,

<dependencies> 
    <dependency> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>truezip-maven-plugin</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>de.schlichtherle.truezip</groupId> 
     <artifactId>truezip-driver-file</artifactId> 
     <version>7.7.10</version> 
    </dependency> 
    <dependency> 
     <groupId>de.schlichtherle.truezip</groupId> 
     <artifactId>truezip-file</artifactId> 
     <version>7.7.10</version> 
    </dependency> 
    <dependency> 
     <groupId>de.schlichtherle.truezip</groupId> 
     <artifactId>truezip-kernel</artifactId> 
     <version>7.7.10</version> 
    </dependency> 
    <dependency> 
     <groupId>de.schlichtherle.truezip</groupId> 
     <artifactId>truezip-driver-zip</artifactId> 
     <version>7.7.10</version> 
    </dependency> 
    </dependencies> 

然后运行mvn clean install它应该工作。

相关问题