簡體   English   中英

Maven生成的jaxb類-ClassNotFoundException

[英]maven generated jaxb classes - ClassNotFoundException

我有一個Maven模型項目,在這里我通過maven命令生成jaxb類-干凈安裝,而jaxb類是在目標文件夾下生成的,而jar文件是在.m2存儲庫文件夾下生成的。

現在在我的另一個項目中,將此jar添加為具有適當組ID和artifactId的依賴項。

但是我正在收到ClassNotFoundException並為那些生成的jaxb類編譯錯誤。

我正在更新我的問題以添加更多詳細信息。

模型項目的Pom文件。

<build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.5.1</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.jvnet.jaxb2.maven2</groupId>
                <artifactId>maven-jaxb2-plugin</artifactId>
                <version>0.8.3</version>
                <executions>
                    <execution>
                        <id>spf-ssp-generate</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <generateDirectory>${project.build.directory}/jaxbclasses/pqr/xyz</generateDirectory>
                            <generatePackage>abc.vo.apply.v1</generatePackage>
                            <schemaIncludes>
                                <include>MyXSD.xsd</include>
                            </schemaIncludes>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <schemaDirectory>src/main/resources</schemaDirectory>
                    <extension>true</extension>
                    <args>
                        <arg>-XtoString</arg>
                        <arg>-Xequals</arg>
                        <arg>-XhashCode</arg>
                    </args>
                    <plugins>
                        <plugin>
                            <groupId>org.jvnet.jaxb2_commons</groupId>
                            <artifactId>jaxb2-basics</artifactId>
                            <version>0.6.4</version>
                        </plugin>
                    </plugins>
                </configuration>
            </plugin>
        </plugins>
    </build>

clean install它會在下面生成類文件。 目標jaxbclasses pqr xyz

包名稱為abc.vo.apply.v1

我還有另一個Maven項目(jar),假設是A和B。現在我可以將jaxb模型項目用作maven依賴項,並且可以很好地編譯。

現在,我的Web項目不是Maven項目,而是基於Ant的Liferay。 我手動將A,B和Jaxb Model項目復制到lib文件夾中。 它會罰款。 但我收到ClassNotFoundException。

我要添加另一個答案,我認為這是更准確的。

為了使您的JAXB項目編譯,我必須添加此依賴項:

<dependency>
  <groupId>org.jvnet.jaxb2_commons</groupId>
  <artifactId>jaxb2-basics</artifactId>
  <version>0.6.5</version>
</dependency>

這顯然不會自動成為Liferay類路徑的一部分。

當我運行mvn dependency:list ,我得到了:

org.jvnet.jaxb2_commons:jaxb2-basics-tools:jar:0.6.4:compile
org.jvnet.jaxb2_commons:jaxb2-basics:jar:0.6.4:compile
commons-lang:commons-lang:jar:2.2:compile
commons-logging:commons-logging:jar:1.1.1:compile
com.google.code.javaparser:javaparser:jar:1.0.8:compile
org.jvnet.jaxb2_commons:jaxb2-basics-runtime:jar:0.6.4:compile
commons-beanutils:commons-beanutils:jar:1.7.0:compile`

這意味着您還需要將它們放在Liferay安裝的lib目錄中。

這很可能是由於默認情況下target目錄從不包含在jar文件中。 嘗試將JAXB類配置為在(例如) target/generated 然后,將其添加到POM的build plugin部分:

  <plugin>
     <groupId>org.codehaus.mojo</groupId>
     <artifactId>build-helper-maven-plugin</artifactId>
     <version>1.9.1</version>
     <executions>
        <execution>
          <id>add-java-sources</id>
          <goals>
            <goal>add-source</goal>
          </goals>
          <configuration>
            <sources>
              <source>${project.build.directory}/generated</source>
            </sources>
          </configuration>
       </execution>
    </executions>
  </plugin>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM