Java Maven:tools.jar在执行wsgen时未找到

Java Maven:tools.jar在执行wsgen时未找到,java,maven,jax-ws,wsgen,Java,Maven,Jax Ws,Wsgen,我尝试从Windows 8命令行使用jaxws:wsgenmaven插件,但失败的原因是: java.lang.ClassNotFoundException:com.sun.mirror.apt.AnnotationProcessorFactory 我知道这表明Maven在我的JDK中找不到tools.jar,但我不知道如何添加它(当然安装了JDK) 以下是有关我的配置的一些详细信息: echo %JAVA_HOME% C:\Java\jdk1.7.0_51 java -version jav

我尝试从Windows 8命令行使用
jaxws:wsgen
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>
但是我仍然得到
ClassNotFoundException

全输出:

[错误]无法执行目标 mojo:jaxws-maven插件:1.10:wsgen(生成wsdl) project WebService:未能执行wsgen: com/sun/mirror/apt/AnnotationProcessor工厂: com.sun.mirror.apt.AnnotationProcessorFactory->[帮助1] org.apache.maven.lifecycle.LifecycleExecutionException:未能 执行goal org.codehaus.mojo:jaxws-maven插件:1.10:wsgen 在project WebService上(生成wsdl):未能执行wsgen 位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216) 位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 位于org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 位于org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 位于org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 位于org.apache.maven.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(本机方法)处 在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:未能 执行wsgen 位于org.codehaus.mojo.jaxws.AbstractWsGenMojo.execute(AbstractWsGenMojo.java:102) 位于org.codehaus.mojo.jaxws.MainWsGenMojo.execute(MainWsGenMojo.java:14) 位于org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106) 位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 19更多原因:java.lang.NoClassDefFoundError:com/sun/mirror/apt/AnnotationProcessorFactory 位于java.lang.ClassLoader.defineClass1(本机方法) 位于java.lang.ClassLoader.defineClass(ClassLoader.java:800) 位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 位于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.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.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) 位于com.sun.tools.ws.WsGen.doMain(WsGen.java:69) 位于org.codehaus.mojo.jaxws.AbstractWsGenMojo.execute(AbstractWsGenMojo.java:97) ... 22更多原因:java.lang.ClassNotFoundException:com.sun.mirror.apt.AnnotationProcessorFactory 位于org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50) 位于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) ... 38多

同样,将
tools.jar
放入本地存储库并没有解决我的问题

有人知道下一步该做什么吗


谢谢

您可以尝试几件事:因为这是java 7,所以将供应商更改为“Oracle Corporation”

你确定你有这个路径吗${java.home}/./lib/tools.jar

仅出于测试原因,您可以在默认情况下激活此配置文件,看看这是否有帮助,从而进一步缩小问题范围

<activation>
  <activeByDefault>true</activeByDefault>
</activation>

真的
完整的输出(插件遇到问题的某些上下文)将非常有用。我不完全确定,但我认为jaxws-maven插件缺少类,而不是您的应用程序,因此您应该向该插件而不是应用程序添加依赖项


编辑:OP的代码来自c
<activation>
  <activeByDefault>true</activeByDefault>
</activation>
<plugin>
 <groupId>org.codehaus.mojo</groupId>
 <artifactId>jaxws-maven-plugin</artifactId>
 <...>
 <dependencies>
  <dependency>
   <groupId>com.sun</groupId>
   <artifactId>tools</artifactId>
   <version>1.7</version>
   <scope>system</scope>
   <systemPath>${java.home}/../lib/tools.jar</systemPath>
  </dependency>
 </dependencies>
</plugin>
<plugin>
    <groupId>org.jvnet.jax-ws-commons</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>2.2</version>
</plugin>