Исключение TrueZip, возникающее при вызове метода cp_rp - PullRequest
2 голосов
/ 17 июня 2011

У меня действительно простая программа, в которой я пытаюсь добавить каталог в новый zip-файл. Код:

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

Это в значительной степени код из здесь . Исключение:

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.

Ответы [ 3 ]

2 голосов
/ 17 июня 2011

Правильно, существуют зависимости времени выполнения от модулей драйверов файловой системы, к которым вы хотите получить доступ.

Например, если вы хотите получить доступ к файлам ZIP, вам необходимо иметь JAR-файлы модулей TrueZIP Driver ZIP (truezip-driver-zip) и файл драйвера TrueZIP (truezip-driver-file) в пути к классу времени выполнения.

0 голосов
/ 22 июня 2017

Если вы используете Maven, вы можете добавить следующие зависимости в ваш файл 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, и оно должно работать.

0 голосов
/ 17 июня 2011

Проблема была в отсутствующей зависимости JAR от проекта: truezip-driver-file-jse7-7.2-beta-3.jar.Вы можете получить его от здесь .Довольно сложно найти все необходимые файлы.

...