无法通过命令行

时间:2016-02-23 18:57:17

标签: java maven truezip

我通过Spring IDE启用了overhereconnection,但是当我尝试通过命令行运行我的maven构建的应用程序时,我收到此错误:

Exception in thread "main" java.util.ServiceConfigurationError: jar (Unknown file system scheme! May be the class path doesn't contain the respective driver module or it isn't set up correctly?)
        at de.schlichtherle.truezip.fs.FsAbstractCompositeDriver.newController(FsAbstractCompositeDriver.java:33)
        at de.schlichtherle.truezip.fs.FsDefaultManager.getController0(FsDefaultManager.java:95)
        at de.schlichtherle.truezip.fs.FsDefaultManager.getController(FsDefaultManager.java:78)
        at de.schlichtherle.truezip.file.TFile.getController(TFile.java:1497)
        at de.schlichtherle.truezip.file.TFile.parse(TFile.java:687)
        at de.schlichtherle.truezip.file.TFile.<init>(TFile.java:659)
        at de.schlichtherle.truezip.file.TFile.<init>(TFile.java:601)
        at nl.javadude.scannit.reader.TFiles.tFile(TFiles.java:23)
        at nl.javadude.scannit.reader.ArchiveEntrySupplier.withArchiveEntries(ArchiveEntrySupplier.java:23)
        at nl.javadude.scannit.Worker.scanFiles(Worker.java:59)
        at nl.javadude.scannit.Worker.scanURI(Worker.java:53)
        at nl.javadude.scannit.Worker.scan(Worker.java:46)
        at nl.javadude.scannit.Scannit.<init>(Scannit.java:41)
        at com.xebialabs.overthere.Overthere.boot(Overthere.java:74)
        at com.xebialabs.overthere.Overthere.<clinit>(Overthere.java:69)
        at com.emc.ondemand.agent.core.discovery.AnalyzeSelf.constructODEnvironmentForSingleHost(AnalyzeSelf.java:172)
        at com.emc.ondemand.agent.core.discovery.DiscoverEnvironment.discoverEnvironment(DiscoverEnvironment.java:85)
        at com.emc.ondemand.agent.core.discovery.DiscoverEnvironment.main(DiscoverEnvironment.java:48)

我的代码调用如下:

    // establish winrm connection to target host
    ConnectionOptions options = new ConnectionOptions(); 
    options.set(ADDRESS, myHost.getIP()); 
    options.set(USERNAME, user); 
    options.set(PASSWORD, pass); 
    options.set(OPERATING_SYSTEM, WINDOWS); 
    options.set(CONNECTION_TYPE, WINRM_NATIVE); // was not able to get WINRM_INTERNAL to work with processes
    connection = Overthere.getConnection("cifs", options);

这是我唯一的依赖:

    <dependency>
        <groupId>com.xebialabs.overthere</groupId>
        <artifactId>overthere</artifactId>
        <version>4.2.1</version>
    </dependency>

它确实引入了正确的Truezip类,所以我对它的确切含义感到茫然。

1 个答案:

答案 0 :(得分:1)

我猜你的依赖是一个超级JAR?请检查类路径上是否有名为META-INF/services/de.schlichtherle.truezip.fs.spi.FsDriverService的文件。其中,它需要包含以下条目:

de.schlichtherle.truezip.fs.archive.zip.ZipDriverService

如果情况并非如此,请联系overthere工件的创建者并告诉他们他们似乎错误地从TrueZIP依赖项中组装了他们的工件。

在所有情况下,您都应该能够通过向类路径添加另一个依赖项来解决此问题:

<dependency>
  <groupId>de.schlichtherle.truezip</groupId>
  <artifactId>truezip-driver-zip</artifactId>
  <version>7.7.9</version>
</dependency>