没有可用于配置选项的 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]的主要内容,如果未能解决你的问题,请参考以下文章