Windows下使用maven exec:java插件的JSP类路径问题

Windows下使用maven exec:java插件的JSP类路径问题,java,jsp,jetty,classpath,exec-maven-plugin,Java,Jsp,Jetty,Classpath,Exec Maven Plugin,我正在尝试从主服务器运行Jetty web框架。。。在运行时加载JSP的SpringWeb上下文。在OSX和Linux上使用mvn exec:java从命令行执行这项操作非常有效。然而,在运行Cygwin的Windows上,我无法让它完全工作 应用程序加载和web上下文似乎构建得很好。但是,当呈现第一个JSP页面时,JVM会动态编译它,并抛出以下错误/异常: org.apache.tools.ant.BuildException: Unable to find a javac compiler;

我正在尝试从主服务器运行Jetty web框架。。。在运行时加载JSP的SpringWeb上下文。在OSX和Linux上使用mvn exec:java从命令行执行这项操作非常有效。然而,在运行Cygwin的Windows上,我无法让它完全工作

应用程序加载和web上下文似乎构建得很好。但是,当呈现第一个JSP页面时,JVM会动态编译它,并抛出以下错误/异常:

org.apache.tools.ant.BuildException: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK
    at org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory.getCompiler(CompilerAdapterFactory.java:105) ~[gwt-dev-2.5.1.jar:na]
    at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:924) ~[gwt-dev-2.5.1.jar:na]
    at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:757) ~[gwt-dev-2.5.1.jar:na]
    at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:382) [gwt-dev-2.5.1.jar:na]
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:472) [gwt-dev-2.5.1.jar:na]
    ...
在发布之前,我做了大量的网络搜索,并尝试了很多方法

JAVA_HOME变量设置正确。 我已经确定它指向的是JDK,而不是JRE。tools.jar文件确实存在于%JAVA\u HOME%/lib/tools.jar下。 JAVA_主路径在程序文件中,我担心空间问题,但用Progra~1替换它似乎也不起作用。 我们在Cygwin下尝试了mvn shell脚本,也在DOS下尝试了mvn.bat脚本,但都失败了。 还有其他人有这个问题吗?我是否需要更改类路径,以便以某种方式专门向tools.jar添加依赖项?可能在pom.xml中添加了一些内容?提前谢谢

com.sun.tools.javac.Main不在类路径上

我不确定这是否是正确的解决方案,但我从以下答案中找到了一个解决方法:

我还利用了这个答案:

最后,我在pom中添加了一个特定的Windows依赖项,专门将tools.jar添加到类路径中:

<profiles>
    <profile>
        <id>windows</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <os>
                <family>windows</family>
            </os>
        </activation>
        <dependencies>
            <dependency>
                <groupId>com.sun</groupId>
                <artifactId>tools</artifactId>
                <version>1.6</version>
                <scope>system</scope>
                <systemPath>${java.home}/../lib/tools.jar</systemPath>
            </dependency>
        </dependencies>
    </profile>
</profiles>
仅当操作系统系列为windows时,此选项才会添加依赖项。系统路径../在路径中是必需的,因为出于某种原因,${java.home}最终成为$java_home/jre。版本似乎并不重要,因为1.7和1.6似乎可以工作


希望这对其他人有所帮助。

您使用的是哪种版本的maven?你看过的源代码了吗?我使用的是maven 2.2.1,而不是ant@SotiriosDelimanolis。无论生成日志的是什么,似乎都是使用ant,我只是假设它是maven。对于旧版本,如果您使用的是compiler.Duh,是否可能不支持Java7。我想知道我是否从gwt dev那里得到了一些我不应该成为@SotiriosDelimanolis的废话。谢谢你戳我看看所有的路径。