Alfresco Maven SDK - 如果模块版本字符串以“-SNAPSHOT”结尾,则会失败

时间:2015-04-08 09:50:10

标签: maven alfresco

所以我创建了一个放大器项目,包括repo和share,每次我尝试构建或运行项目时都失败了:

java.lang.NoClassDefFoundError: de/schlichtherle/truezip/fs/FsSyncExceptionBuilder
    at de.schlichtherle.truezip.fs.FsManager.sync(FsManager.java:99)
    at de.schlichtherle.truezip.fs.FsSyncShutdownHook$Hook.run(FsSyncShutdownHook.java:93)
Caused by: java.lang.ClassNotFoundException: de.schlichtherle.truezip.fs.FsSyncExceptionBuilder
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
    ... 2 more

的pom.xml

<project [...]>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.someco</groupId>
    <artifactId>someco-repo</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <name>someco-repo AMP project</name>
    <packaging>amp</packaging>
    [...]
    <parent>
        <groupId>org.alfresco.maven</groupId>
        <artifactId>alfresco-sdk-parent</artifactId>                       
        <version>1.1.1</version> // same with 1.1.0
    </parent>

将模块版本从1.0.0-SNAPSHOT更改为1.0.0有效,但我无法使用快照(或至少将其标识为-SNAPSHOT)。

有什么想法吗?

5 个答案:

答案 0 :(得分:3)

这实际上应该有效。所以我想知道你的环境中是否有一些奇怪的东西。您是否有机会删除该库的本地副本(~/.m2/repository/de/schlichterle/truezip)并重试?

我想知道你的版本是否已损坏。

听起来很奇怪,但是当你改变版本时它会起作用......

答案 1 :(得分:1)

我遇到了同样的错误。

我曾经一直以maven身份运行maven。 我尝试删除~/.m2/repository/de/schlichterle/truezip。这没有用。

然后我删除了目标目录,其中包含root用户拥有的一些文件。我不完全理解为什么要修复它,但确实如此。

再次运行maven后,~/.m2/repository/de/schlichterle/truezip目录仍然不存在,但显然不需要它,因为一切正常。

答案 2 :(得分:0)

file-mapping.properties中指定的映射不正确(不能由alfresco maven解析)时,则抛出此错误。

我不确定为什么它无法解析映射。 但它会引发错误:

web/=/

但不是:

/web/=/

答案 3 :(得分:0)

错误日志显示:

java.lang.NoClassDefFoundError

这意味着代码中缺少一个类。您正在使用Alfresco,这意味着您缺少依赖项。 Jeff Pott的教程现在有点过时了。

您需要在pom.xml文件中添加trueziptruezip-drivertruezip-file的相关性。然后,重新运行并运行。

答案 4 :(得分:0)

您需要将TrueZIP Maven Plugin依赖项及其drivers添加到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.9</version>
    </dependency>
    <dependency>
      <groupId>de.schlichtherle.truezip</groupId>
       <artifactId>truezip-kernel</artifactId>
      <version>7.7.9</version>
    </dependency>
    <dependency>
      <groupId>de.schlichtherle.truezip</groupId>
      <artifactId>truezip-driver-zip</artifactId>
      <version>7.7.9</version>
    </dependency>
  </dependencies>
...

要进一步调试,请尝试为-X命令添加mvn标志。