Exception TrueZip levée lors de l'appel de la méthode cp_rp
Question
J'ai un programme très simple dans lequel j'essaye d'ajouter un répertoire à un nouveau fichier zip.Le code:
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();
}
}
}
C'est à peu près le code de ici . L'exception:
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
Je ne parviens pas à trouver quoi que ce soit concernant cette exception sur la page du projet ou sur d'autres pages.Quelqu'un a-t-il déjà vu cela avant?J'utilise TrueZip 7.1.4.
La solution
Bien, il existe des dépendances d'exécution sur les modules du pilote du système de fichiers auxquels vous souhaitez accéder.
Par exemplesi vous voulez accéder aux fichiers ZIP, vous devez avoir les JAR des modules TrueZIP Driver ZIP (truezip-driver-zip
) et TrueZIP Driver File (truezip-driver-file
) sur le chemin de la classe d'exécution.
Autres conseils
Le problème était qu'il manquait une dépendance JAR sur le projet: truezip-driver-file-jse7-7.2-beta-3.jar
.Vous pouvez l'obtenir sur ici .Il est assez difficile de trouver tous les fichiers nécessaires.
Si vous utilisez Maven, vous pouvez ajouter les dépendances dans votrefichier pom.xml
, par exemple
<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>
Ensuite, lancez mvn clean install
et cela devrait fonctionner.