Djava.endorsed.dirs=D:\Tomcat 9.0\endorsed is not supported

在2019.3 idea中,Java11配置Tomcat 8启动失败,报错显示‘Djava.endorsed.dirs’不被支持。资料显示是Tomcat版本与JDK版本不匹配,官网也有相关解释。解决方案是删除Tomcat目录下bin文件夹中catalina.bat文件里的‘-Djava.endorsed.dirs’,然后重启Tomcat。

在2019.3 idea中 java11 配置tomcat 8启动失败, 报错如下:

  

Djava.endorsed.dirs=D:\Tomcat 9.0\endorsed is not supported. 

Endorsed standards and standalone APIsin modular form will be supported via the concept of upgradeable modules.

 

查了一些相关资料,说是tomcat版本与jdk版本不匹配,官网(https://docs.oracle.com/javase/10/migrate/toc.htm#JSMIG-GUID-8E83E51A-88A3-4E9A-8E2A-66E1D66A966C)也给了解释:

 

解决方案:

tomcat目录\bin\catalina.bat文件中用到  -Djava.endorsed.dirs处删除,重启tomcat即可

即删除文中红线处

F:\apache-tomcat-9.0.111-windows-x64\apache-tomcat-9.0.111\bin\catalina.bat run [2025-11-20 04:54:43,030] Artifact ssma:war: Waiting for server connection to start artifact deployment... Using CATALINA_BASE: "C:\Users\ZhuanZ1\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_ssma" Using CATALINA_HOME: "F:\apache-tomcat-9.0.111-windows-x64\apache-tomcat-9.0.111" Using CATALINA_TMPDIR: "F:\apache-tomcat-9.0.111-windows-x64\apache-tomcat-9.0.111" Using JRE_HOME: "C:\Program Files\Java\jdk1.8.0_202" Using CLASSPATH: "F:\apache-tomcat-9.0.111-windows-x64\apache-tomcat-9.0.111\bin\bootstrap.jar;F:\apache-tomcat-9.0.111-windows-x64\apache-tomcat-9.0.111\bin\tomcat-juli.jar" Using CATALINA_OPTS: "" Connected to the target VM, address: '127.0.0.1:55719', transport: 'socket' 20-Nov-2025 16:54:44.048 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.111 20-Nov-2025 16:54:44.051 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Oct 10 2025 14:13:20 UTC 20-Nov-2025 16:54:44.051 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.111.0 20-Nov-2025 16:54:44.051 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 10 20-Nov-2025 16:54:44.051 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0 20-Nov-2025 16:54:44.051 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64 20-Nov-2025 16:54:44.051 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Program Files\Java\jdk1.8.0_202\jre 20-Nov-2025 16:54:44.051 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 1.8.0_202-b08 20-Nov-2025 16:54:44.051 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Oracle Corporation 20-Nov-2025 16:54:44.051 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: C:\Users\ZhuanZ1\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_ssma 20-Nov-2025 16:54:44.052 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: F:\apache-tomcat-9.0.111-windows-x64\apache-tomcat-9.0.111 20-Nov-2025 16:54:44.052 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=C:\Users\ZhuanZ1\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_ssma\conf\logging.properties 20-Nov-2025 16:54:44.052 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 20-Nov-2025 16:54:44.052 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:55719,suspend=y,server=n 20-Nov-2025 16:54:44.052 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -javaagent:C:\Users\ZhuanZ1\AppData\Local\JetBrains\IntelliJIdea2020.1\captureAgent\debugger-agent.jar 20-Nov-2025 16:54:44.052 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote= 20-Nov-2025 16:54:44.052 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.port=1099 20-Nov-2025 16:54:44.052 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.ssl=false 20-Nov-2025 16:54:44.052 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.password.file=C:\Users\ZhuanZ1\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_ssma\jmxremote.password 20-Nov-2025 16:54:44.052 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.access.file=C:\Users\ZhuanZ1\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_ssma\jmxremote.access 20-Nov-2025 16:54:44.052 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.rmi.server.hostname=127.0.0.1 20-Nov-2025 16:54:44.052 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djdk.tls.ephemeralDHKeySize=2048 20-Nov-2025 16:54:44.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 20-Nov-2025 16:54:44.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dsun.io.useCanonCaches=false 20-Nov-2025 16:54:44.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dignore.endorsed.dirs= 20-Nov-2025 16:54:44.055 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=C:\Users\ZhuanZ1\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_ssma 20-Nov-2025 16:54:44.055 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=F:\apache-tomcat-9.0.111-windows-x64\apache-tomcat-9.0.111 20-Nov-2025 16:54:44.055 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=F:\apache-tomcat-9.0.111-windows-x64\apache-tomcat-9.0.111 20-Nov-2025 16:54:44.058 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.7.4]加载了基于APR的Apache Tomcat本机库[1.3.1]。 20-Nov-2025 16:54:44.058 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能:IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。 20-Nov-2025 16:54:44.058 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置:useAprConnector[false],useOpenSSL[true] 20-Nov-2025 16:54:44.063 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 3.0.14 4 Jun 2024] 20-Nov-2025 16:54:44.281 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"] 20-Nov-2025 16:54:44.296 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[451]毫秒内初始化 20-Nov-2025 16:54:44.325 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina] 20-Nov-2025 16:54:44.325 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.111] 20-Nov-2025 16:54:44.337 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"] 20-Nov-2025 16:54:44.354 信息 [main] org.apache.catalina.startup.Catalina.start [57]毫秒后服务器启动 Connected to server [2025-11-20 04:54:44,597] Artifact ssma:war: Artifact is being deployed, please wait... 20-Nov-2025 16:54:46.911 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 20-Nov-2025 16:54:46.967 信息 [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext: initialization started 20-Nov-2025 16:54:47.999 信息 [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext initialized in 1032 ms 20-Nov-2025 16:54:48.050 信息 [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.FrameworkServlet.initServletBean Initializing Servlet 'dispatcher' 20-Nov-2025 16:54:48.778 信息 [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.FrameworkServlet.initServletBean Completed initialization in 728 ms [2025-11-20 04:54:48,799] Artifact ssma:war: Artifact is deployed successfully [2025-11-20 04:54:48,799] Artifact ssma:war: Deploy took 4,203 milliseconds Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. 20-Nov-2025 16:54:49.339 信息 [http-nio-8080-exec-2] com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl.info {dataSource-1} inited 20-Nov-2025 16:54:54.352 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [F:\apache-tomcat-9.0.111-windows-x64\apache-tomcat-9.0.111\webapps\manager] 20-Nov-2025 16:54:54.412 信息 [Catalina-utility-2] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 20-Nov-2025 16:54:54.421 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[F:\apache-tomcat-9.0.111-windows-x64\apache-tomcat-9.0.111\webapps\manager]的部署已在[68]毫秒内完成 20-Nov-2025 16:55:00.228 警告 [http-nio-8080-exec-6] org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.logException Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported]
最新发布
11-21
以下是对这些 Java 虚拟机参数和系统属性的含义及作用的解释: ### `-Xmx700m` 这是一个 JVM 的堆内存设置参数。`-Xmx` 用于指定 Java 虚拟机(JVM)所能使用的最大堆内存大小。`700m` 表示将最大堆内存大小设置为 700 兆字节(MB)。当 Java 程序运行时,堆内存用于存储对象实例。如果程序在运行过程中需要的内存超过了这个设置值,JVM 可能会抛出 `OutOfMemoryError` 异常。例如,如果一个 Java 程序需要处理大量的数据,而堆内存设置过小,就可能导致内存不足的问题。通过调整 `-Xmx` 参数,可以根据程序的实际需求来分配合适的内存资源,避免因内存不足而导致程序崩溃,同时也能防止过度分配内存造成系统资源的浪费 [^1][^3]。 ### `-Djava.awt.headless=true` 这是一个系统属性设置。`-D` 用于设置系统属性,`java.awt.headless` 是一个布尔类型的系统属性。当将其设置为 `true` 时,表示 Java 虚拟机以“无头”模式运行。在无头模式下,Java 程序可以在没有图形用户界面(GUI)支持的环境中运行,例如在服务器环境中。一些 Java 应用程序可能会使用 AWT(Abstract Window Toolkit)或 Swing 库来创建图形界面,但在服务器上通常不需要显示界面,只需要执行一些后台任务。设置 `java.awt.headless=true` 可以避免因缺少图形显示设备而引发的 `java.awt.HeadlessException` 异常。例如,在 Jenkins 等持续集成工具中,Java 程序在 Linux 服务器上运行时,就可能需要设置这个属性来避免无头异常 [^2]。 ### `-Djava.endorsed.dirs=""` 同样是使用 `-D` 设置的系统属性。`java.endorsed.dirs` 用于指定 Java 平台的认可目录。Java 的认可机制允许用户指定一组目录,JVM 在加载类时会优先从这些目录中查找类文件,以覆盖 Java 核心类库中的某些类。将其设置为空字符串 `""` 表示不指定任何认可目录。在某些情况下,可能需要确保 Java 程序使用的是标准的 Java 核心类库,而不希望被认可目录中的类文件所干扰,这时就可以将该属性设置为空 [^2]。 ### `-Dpreload.project.path=E:/spark/sparkdemo2/sparkdemo2` 这也是一个系统属性设置。`preload.project.path` 是自定义的系统属性名,其值为 `E:/spark/sparkdemo2/sparkdemo2`,这是一个文件路径。在 Java 程序中,可以通过 `System.getProperty("preload.project.path")` 方法来获取这个属性的值。这个属性通常用于指定某个项目的预加载路径,例如在 Spark 项目中,可能会使用这个属性来指定项目的根路径,以便程序能够正确地加载项目中的资源文件、配置文件等。通过设置这个属性,程序可以根据不同的项目路径进行灵活配置,提高代码的可移植性和可维护性。 ```java public class Main { public static void main(String[] args) { String projectPath = System.getProperty("preload.project.path"); System.out.println("Project path: " + projectPath); } } ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值