Windows下使用maven exec:java插件的JSP类路径问题
我正在尝试从主服务器运行Jetty web框架。。。在运行时加载JSP的SpringWeb上下文。在OSX和Linux上使用mvn exec:java从命令行执行这项操作非常有效。然而,在运行Cygwin的Windows上,我无法让它完全工作 应用程序加载和web上下文似乎构建得很好。但是,当呈现第一个JSP页面时,JVM会动态编译它,并抛出以下错误/异常: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;
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的废话。谢谢你戳我看看所有的路径。