没有可用于配置选项的 Java 编译器 compilerClassName: [null] and compiler: [null]

Posted

技术标签:

【中文标题】没有可用于配置选项的 Java 编译器 compilerClassName: [null] and compiler: [null]【英文标题】:No Java compiler available for configuration options compilerClassName: [null] and compiler: [null] 【发布时间】:2018-08-04 13:27:03 【问题描述】:

我正在尝试使用 Spring Boot 制作简单的 MVC 应用程序。当我使用简单的 Rest 控制器时一切正常,但当我尝试重定向到 JSP 页面时,它不适用于简单的控制器。这是我的 POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.assesment</groupId>
    <artifactId>VW-Assignment</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>VW-Assignment</name>
    <description></description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.eclipse.jdt.core.compiler</groupId>
            <artifactId>ecj</artifactId>
            <version>4.6.1</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

这是错误:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: No Java compiler available for configuration options compilerClassName: [null] and compiler: [null]
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

我在互联网上看到很多地方都提到使用以下依赖项会起作用,但不幸的是它对我不起作用。

org.eclipse.jdt.core.compiler

知道是什么原因吗?

【问题讨论】:

删除 jsp 页面会得到 404,所以这意味着它实际上重定向很好,唯一的问题是编译该 JSP 页面。 请在您的 Eclipse 中检查您是否已将 JRE 设置为适当的版本和确切位置?如果没有,请在您的 Eclipse 中自动添加并执行项目清理和构建... 这很好,因为如果我制作休息控​​制器,我会得到正确的响应。它只是不适用于 JSP, 看起来您的应用程序中没有配置 JSP 编译器 (Jasper)。它没有在你的 POM 中完成。检查 Spring Boot 如何启用 JSP 编译器;默认情况下它可能未启用。 【参考方案1】:

添加此依赖项是有效的,因为我在多台机器上重现了相同的场景并且这很有效。这在一台机器上不起作用的原因仍然未知。很可能是一些配置问题。

<dependency>
    <groupId>org.eclipse.jdt.core.compiler</groupId>
    <artifactId>ecj</artifactId>
    <version>4.6.1</version>
</dependency>

【讨论】:

以上是关于没有可用于配置选项的 Java 编译器 compilerClassName: [null] and compiler: [null]的主要内容,如果未能解决你的问题,请参考以下文章

Maven - 添加源依赖;但 Eclipse 中没有可用于 GWT 编译的 Java 源文件

java命令功能

eclipse没有server选项解决方法

eclipse没有server选项解决方法

Java 编译解释

php-config——PHP配置信息的查看