问题一:

我在shell脚本中用:
nohup java -Djava.ext.dirs=${DIR}/ -jar ${DIR}/${JAR_NAME} > ${DIR}/nohup.out &
启项目,请求https报了以下错误:

Caused by: javax.net.ssl.SSLKeyException: RSA premaster secret error

问题二:

为解决问题一,将:
jre目录下的/lib/ext/sunjce_provider.jar加到自己的jar包同级目录后

启动报以下错误:

Caused by: java.lang.NoSuchMethodError: sun.security.internal.spec.TlsMasterSecretParameterSpec.getExtendedMasterSecretSessionHash()

并且程序直接退出。

最后:

改启动脚本如下:

nohup java -Djava.ext.dirs=${DIR}/:${JRE_DIR}/lib/:${JRE_DIR}/lib/ext/ -jar ${DIR}/${JAR_NAME} > ${DIR}/nohup.out &

问题全部解决了

总结原因:

1.由于我打包方式的问题,导致配置文件没有加载到classpath目录下,为了解决配置文件加载问题我用了java -Djava.ext.dirs=${DIR}/ -jar ${DIR}/${JAR_NAME},但是这样一来java自带的一些加密解密的jar包,就不会自动加进来了,详情可以百度。

2.-Djava.ext.dirs=${DIR}/:${JRE_DIR}/lib/:${JRE_DIR}/lib/ext/中:

${DIR}/是jar所在目录,

${JRE_DIR}/lib/:${JRE_DIR}/lib/ext/引得就是eclipseJRE System Libraryjar

如图:


如上图,这些jar全部来自jre目录下的 /lib/和/lib/ext/目录,只要将这两个目录的路径配到-Djava.ext.dirs参数中就能解决问题

最后的最后:

其实你不用-Djava.ext.dirs参数,就不会有上面的问题(不用-Djava.ext.dirs参数,java -jar启动的时候,会自动加载 eclipseJRE System Library显示的这些jar),但还会有配置文件加载的问题,可以用 java -cp代替,最好的解决方式如下,在pom中加入以下plugin的配置:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifestEntries><!-- 把jar包所在目录和jar包所在目录下的config目录加到manifest的classpath中 --><Class-Path>. ./config/</Class-Path></manifestEntries></archive><excludes><exclude>lib/**</exclude><exclude>templates/**</exclude><exclude>config/**</exclude><exclude>*.properties</exclude><exclude>*.config</exclude><exclude>*.json</exclude><exclude>*.xml</exclude><exclude>*.proto</exclude><exclude>*.yml</exclude><exclude>mapper/**</exclude><exclude>doc/**</exclude></excludes></configuration>
</plugin>

pom加入以上配置,就是把jar包所在目录和jar包所在目录下的config目录加到manifest的classpath中。
这样配置后打包生成的MANIFEST.MF文件如下:

这样你读额外的配置就可以用ClassLoader(类加载器)读取到了

java -Djava.ext.dirs= -jar 启动项目,产生的问题相关推荐

  1. java -cp 与 java -Djava.ext.dirs的区别与坑

    大家在linux环境下使用命令行执行java程序时,经常要使用到大量外部的jar包或class文件,一般我们有哪些方式可以用呢? -classpath,命令格式:# java -classpath & ...

  2. java djava_Java -Djava.ext.dirs启动的坑

    java以jar包形式启动启动 -Djava.ext.dirs=lib的作用 以bat形式启动项目,linux环境需要改变语法 ------------------------------ java ...

  3. java ext.dirs_关于-Djava.ext.dirs使用及JAVA 命令参数详解System.setProperty

    大家在linux环境下使用命令行执行java程序时,经常要使用到大量外部的jar包或class文件,一般我们有哪些方式可以用呢? -classpath,命令格式:# java -classpath , ...

  4. java ext.dirs_关于-Djava.ext.dirs使用问题

    大家在linux环境下使用命令行执行java程序时,经常要使用到大量外部的jar包或class文件,一般我们有哪些方式可以用呢? -classpath,命令格式:# java -classpath , ...

  5. Java指令-Djava.ext.dirs的陷阱

    Java指令-Djava.ext.dirs的陷阱 https://blog.csdn.net/cyony/article/details/74375251 这两天由于现场需求,需要把ES索引写入插件改 ...

  6. java -Djava.library.path -Djava.ext.dirs 的区别

    2019独角兽企业重金招聘Python工程师标准>>> -Djava.library.path 是vm参数,指名dll库... -Djava.ext.dirs 是jar路径.. 附加 ...

  7. java jar 启动项目,SpringBoot项目运行jar包启动的步骤流程解析

    SpringBoot项目在开发中,方便快捷,有一点原因就是SpringBoot项目可以打jar包运行:把jar包直接扔服务器上,然后运行jar包就能访问项目接口了.下面介绍SpringBoot项目打j ...

  8. java -jar 启动程序/设置classpath

    目录 前言 java 类加载器与路径 java 设置路径的方法 设置 bootclasspath 设置 Extensions JAR files 设置 classpath 测试程序 java -jar ...

  9. d+java.ext.dirs_Java-JDK9-Djava.ext.dirs is not supported

    1.JDK9出现的问题 去年JDK9发布了, 最近我把JDK8更新为JDK9后, 当我使用 Android apksigner dx 命令工具出现如下问题 D:\Dev\AndroidSDK\buil ...

最新文章

  1. windows下忘记mysql超级管理员密码的解决办法
  2. java 真数组 伪数组_伪数组(ArrayLike)
  3. buu [GKCTF2020]汉字的秘密
  4. linux进程通讯-纯文本文件
  5. Linux ARM交叉编译工具链制作过程
  6. linux编写随机数脚本,Shell使用RANDOM编写1-10以内随机数
  7. 都是成年人了,别再相信OA价格越低越好这种话了
  8. Nexus3搭建本地仓库
  9. 《通关!游戏设计之路》笔记(未整理完)
  10. webstorm识别 ftl文件
  11. pytorch 语⾔模型数据集(周杰伦专辑歌词)数据集 免费
  12. [转载]唐僧的亲爹究竟是谁 (2016-02-17 16:37:21)
  13. 用python写作文_Python3实现写作
  14. PHP分片上传文件到又拍云对象存储
  15. pubwin扫描安装
  16. 如何正确使用数据可视化图表?
  17. 面阵相机靶面详解and镜头选择andFA镜头视野计算
  18. suse linux zypper iso,SUSE Linux的zypper命令详解
  19. VMware设置共享文件夹之后Linux中看不到怎么办?
  20. 光纤的损耗机理 散射损耗 吸收损耗 弯曲损耗

热门文章

  1. phpstudy运行时显示3306端口被占用
  2. CART回归树原理及示例
  3. 二进制安全学习笔记(2)
  4. (c++)两道关于日期相减的题目
  5. Linux中父子进程、兄弟子进程之间通信方式--匿名管道pipe(适用于有血缘关系的进程)
  6. android手机安装ubuntu并创建ubuntu图形界面(1)
  7. L1-7 天梯赛的善良 (20 分)
  8. 一位原码乘法器 一位补码乘法器原理
  9. Android -- 每日一问:在项目中使用AsyncTask会有什么问题吗?
  10. 2022最新影视小程序源码+支持JSON/卡密系统