我尝试jaxws:wsgen
从 Windows 8 命令行使用 maven 插件,但它失败了:
java.lang.ClassNotFoundException: com.sun.mirror.apt.AnnotationProcessorFactory
我知道这表明 Maven 在我的 JDK 中找不到 tools.jar,但我不知道如何添加它(当然安装了 JDK)。
以下是有关我的配置的一些详细信息:
echo %JAVA_HOME%
C:\Java\jdk1.7.0_51
java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
mvn -version
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 17:22:22+0200)
Maven home: C:\Program Files (x86)\apache-maven-3.1.1
Java version: 1.7.0_51, vendor: Oracle Corporation
Java home: C:\Java\jdk1.7.0_51\jre
Default locale: de_CH, platform encoding: Cp1252
OS name: "windows 8", version: "6.2", arch: "amd64", family: "windows"
所以我也尝试在我的 pom.xml 中添加一个配置文件部分:
<profiles>
<profile>
<id>default-tools.jar</id>
<activation>
<property>
<name>java.vendor</name>
<value>Sun Microsystems Inc.</value>
</property>
</activation>
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.7.0</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
</dependencies>
</profile>
</profiles>
并执行
mvn -P default-tools.jar package
但我仍然得到ClassNotFoundException
.
完整输出:
[错误] 无法在项目 WebService 上执行目标 org.codehaus.mojo:jaxws-maven-plugin:1.10:wsgen (generate-wsdl):无法执行 wsgen:com/sun/mirror/apt/AnnotationProcessorFactory:com.sun。 mirror.apt.AnnotationProcessorFactory -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: 无法在项目 WebService 上执行目标 org.codehaus.mojo:jaxws-maven-plugin:1.10:wsgen (generate-wsdl):失败在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216) 执行 wsgen。 maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 在 org.apache.maven 的 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) .lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317) 在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152) 在org.apache.maven.cli.MavenCli.execute(MavenCli.java:555) 在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) 在 org.apache.maven.cli.MavenCli.main( MavenCli.java:158) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher .java:289) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 在 org. codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 原因:org.apache.maven.plugin.MojoExecutionException:无法在 org.codehaus.mojo.jaxws.AbstractWsGenMojo.execute(AbstractWsGenMojo. java:102) 在 org.apache.maven.plugin.DefaultBuildPluginManager 的 org.codehaus.mojo.jaxws.MainWsGenMojo.execute(MainWsGenMojo.java:14)。executeMojo(DefaultBuildPluginManager.java:106) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 19 更多原因:java.lang.NoClassDefFoundError: com/sun/mirror/apt /AnnotationProcessorFactory at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader .defineClass(URLClassLoader.java:449) 在 java.net.URLClassLoader.access$100(URLClassLoader.java:71) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:361) 在 java.net.URLClassLoader$1.run (URLClassLoader.java:355) 在 java.net.URLClassLoader 的 java.security.AccessController.doPrivileged(Native Method)。findClass(URLClassLoader.java:354) 在 org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:389) 在 org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)在 org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:259) 在 org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:235) 在 org.codehaus.plexus.classworlds .realm.ClassRealm.loadClass(ClassRealm.java:227) at com.sun.tools.ws.WsGen.doMain(WsGen.java:69) at org.codehaus.mojo.jaxws.AbstractWsGenMojo.execute(AbstractWsGenMojo.java:97 ) ... 22 更多原因:java.lang.ClassNotFoundException: com.sun.mirror.apt.AnnotationProcessorFactory at org.codehaus.plexus.classworlds.strategy。SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50) at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:259) at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java: 235) 在 org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:227) ... 还有 38 个
也将其tools.jar
放入我的本地存储库并没有解决我的问题。
有人知道接下来要尝试什么吗?
谢谢!