繁体   English   中英

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

[英]Problems with classpath with JSP using maven exec:java plugin under Windows

我正在尝试从main(...)运行一个Jetty Web框架,该框架加载一个Spring Web上下文,该上下文在运行时加载JSP。 在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]
    ...

发布前,我已经进行了大量的网络搜索并尝试了许多操作。

  1. JAVA_HOME变量是否正确设置。
  2. 我确保它指向的是JDK,而不是 JRE。 tools.jar文件确实存在于%JAVA_HOME%/lib/tools.jar
  3. JAVA_HOME路径在Program Files ,我担心该空间,但是用Progra~1替换它似乎也不起作用。
  4. 我们已经尝试了Cygwin下的mvn shell脚本以及DOS下的mvn.bat脚本,但是两者都失败了。

还有其他人有这个问题吗? 我是否需要更改classpath ,以某种方式专门向tools.jar添加依赖项? 也许在pom.xml添加了一些内容? 提前致谢。

com.sun.tools.javac.Main不在类路径中。

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

结合使用javah maven-antrun-plugin和jdk 1.7,classes.jar成为tools.jar

我还利用了以下答案: JDK tools.jar作为maven依赖项

我最终在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>

仅当OS系列是windows才添加依赖项。 系统路径../在路径中是必需的,因为由于某种原因${java.home}最终以$JAVA_HOME/jre结尾。 version似乎无关紧要,因为1.7和1.6似乎可行。

希望这对其他人有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM