tomcat或maven启动服务error解决办法(一)

本文介绍了Maven项目启动时报错“Nocompilerisprovidedinthisenvironment”的三种解决方法,包括升级JDK版本、调整IDE中服务器配置及修改Maven运行配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近用maven启动项目突然不行了,报错信息如下:

[ERROR] COMPILATION ERROR : 

[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.070 s
[INFO] Finished at: 2016-09-23T10:12:38+08:00
[INFO] Final Memory: 13M/32M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project *********: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:

[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

报错信息说的已经很清楚了,解决办法有如下三种(由于本渣用的是中文版,相关路径就用中文表示了,见谅):

一、你用的就是JDK,但是由于版本低,所以报错,最简单的办法就是升级一下自己用的JDK

二、窗口-->首选项-->服务器-->运行时环境-->选择自己用的tomcat选编辑-->JRE:选择JDK

如此解决之后tomcat的服务就可以成功启动了,但是maven还是不行,实在没办法我把组里的大哥叫来帮忙,过来之后他做了第三个办法成功解决maven无法启动的问题

三、项目右键-->运行方式-->运行配置-->选自己的maven服务启动配制-->如下图


我靠坑爹啊,原来在这藏着呢,当时大哥的表情貌似在告诉我:就这问题就难住你了?Are you kidding me?

这三种办法基本上就可以完美解决这种报错了,如果有不足之处,请点醒改正,感谢观看。


### 解决 ExtendedTomcat `stop` 方法 `IllegalAccessException` 错误 对于在 `org.apache.tomcat.maven.plugin.tomcat7.run.ExtendedTomcat` 类中遇到的 `IllegalAccessException` 错误,这通常意味着尝试访问的方法字段不具备足够的权限。此类问题可能源于Java安全模型设置不当是API调用方式不正确。 #### 可能的原因分析 - **类加载器冲突**:不同版本间的类加载顺序可能导致某些类无法被正确识别实例化[^1]。 - **反射调用失败**:当通过反射试图访问私有成员时可能会抛出此异常,尤其是在增强的安全上下文中运行的应用程序[^4]。 #### 推荐解决方案 为了有效处理上述提到的问题,建议采取如下措施: #### 更新依赖项至最新稳定版 考虑到当前使用的 Tomcat Maven Plugin 版本可能存在已知缺陷,升级到最新的发布版本通常是解决问题的第步。新版本往往修复了许多旧版本中存在的漏洞并提高了兼容性。 ```xml <build> <plugins> <!-- 使用更新后的插件配置 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <!-- 确认这是适用于项目的最适配版本 --> </plugin> </plugins> </build> ``` #### 修改插件配置参数 适当调整插件配置选项可以帮助绕过潜在的类加载障碍。例如,在POM文件内增加额外属性来控制启动行为: ```xml <configuration> ... <additionalClasspathDirs> <dir>${project.basedir}/src/main/webapp/WEB-INF/lib</dir> </additionalClasspathDirs> <contextReloadable>true</contextReloadable> ... </configuration> ``` #### 调整 Java 安全策略 如果应用程序是在受限环境中执行,则需确保有足够的权限授予给必要的操作。可以通过编辑JVM启动脚本来放宽特定包下的访问限制。 ```bash -Djava.security.manager \ -Djava.security.policy==${CATALINA_HOME}/conf/catalina.policy ``` 同时确认 catalina.policy 文件中有类似下面的内容允许对目标类的操作: ```plaintext grant codeBase "file:${catalina.home}/-" { permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; }; ``` 以上更改旨在提供更宽松的环境以便于开发阶段调试,但在生产部署前应仔细评估安全性影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值