linux 下运行 jar包 java.lang.ClassNotFoundException: 解决办法
1 发现了这个常见的异常
E:\test>java -cp . -jar x.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/beans/factory/BeanFactory
Caused by: java.lang.ClassNotFoundException: org.springframework.beans.factory.BeanFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
2 经查找,发现正确的MANIFEST.MF如下
Manifest-Version: 1.0
Main-Class: net.java2000.test.jar.TestJar
Class-Path: spring.jar
lib/commons-logging-1.1.jar
这里特别说明一下
1)在 Class-Path: 后面有一个空格,切记
2)在 Class-Path: 后面写上你的jar 用空格分开
3)如果需要换行,切记在上一行末尾一定要有一个空格,下一行的开头一定要有一个空格
4)最后一行要是一个空行,否则Eclipse打包时有可能把你的Class-Path 给忽略掉
3 结论
1) 使用 java -cp 来设置 classpath 对于 jar来说是无效的,因为根据jar的安全规定,其内部的Class-Path 会起作用,外部的会被屏蔽掉(注意是屏蔽掉,不是覆盖掉)
2) Java自身提供了一个设置classpath的方案,那就是使用命令行参数
-Xbootclasspath: 完全取代基本核心的Java class 搜索路径.
不常用,否则要重新写所有Java 核心class
-Xbootclasspath/a: 后缀在核心class搜索路径后面.常用!!
-Xbootclasspath/p: 前缀在核心class搜索路径前面.不常用,避免
引起不必要的冲突.
语法如下:
(分隔符与classpath参数类似,unix使用:号,windows使用;)
java -Xbootclasspath/a:spring.jar;lib/commons-logging-1.1.jar -jar MyProject.jar
3)当然,你把jar放到 {Java_home}\jre\lib\ext 这个目录下面也是可以的,应为JVM肯定会搜索这个目录
linux 下运行 jar包 java.lang.ClassNotFoundException: 解决办法相关推荐
- eclipse打包jar发布到linux下运行出错(java.lang.ClassNotFoundException: cmd.WordCount$MyMapper )
今天在eclipse写一个mapreduce计数例子,打包成jar放到linux下通过hadoop命令运行时出现如下错误: 小小的纠结了一下,检查了一下代码原来是漏写了一个打包的设置: //打成jar ...
- linux下运行jar包命令
本人第一次给安卓的朋友做了迷你级别app的后台,但是一关xshell程序就终止了,因此将搜刮到的资料分享出来 阅览目录 linux下运行jar包的命令 详细介绍第三种方式 linux下的nohup命令 ...
- linux下运行jar包
linux下运行jar包 一. java -jar kafka_data.jar 基本jar包执行方式.当用Ctrl+c中断或者关闭Xshell窗口时,程序也会中断执行. 二. java -jar k ...
- Java命令 在Linux下运行jar包
一.如果java定义了jar包的main class入口,则使用如下命令 $ java -jar my.jar 其中使用maven pom文件配置如下 <!--编译打包插件--> < ...
- Linux下运行jar包的方法
当我们使用SpringBoot的方式开发好了我们的应用,放到我们的Linux服务器上准备上线,首先想到的可能就是通过 java -jar xxx.jar 的方式来运行我们的jar包,程序运行正常, ...
- Windows/Linux下引用jar包,并用javac/java编译运行
Windows/Linux下引用jar包,并用javac/java编译运行,有需要的朋友可以参考下. 1> Windows 假设要引用的jar放在D:/test目录下,名字为t1.jar, ja ...
- 在Linux服务器运行jar包并一直处于后台执行
在Linux服务器运行jar包并一直处于后台执行: 一.一般情况 jar包在linux的目录为 /jarmanager/xxx.jar 使用在/jarmanager目录下使用 java -jar xx ...
- java.lang.classnotfoundexception解决方法
java.lang.classnotfoundexception解决方法 参考文章: (1)java.lang.classnotfoundexception解决方法 (2)https://www.cn ...
- springboot依赖lib外置打成压缩包,以及snapshot依赖jar包ClassNotFoundExcepttion异常的解决办法
springboot依赖lib外置打成压缩包,以及snapshot依赖jar包ClassNotFoundExcepttion异常的解决办法 mvn插件 assembly压缩zip assembly.x ...
最新文章
- Linux下JDK环境的配置
- 每日一皮:即使是个小BUG,有时候也能吓你半条命!
- bitMap保存图片
- Flutter 完美的验证码输入框(2 种方法)
- 《刻意练习》到底讲了些什么???
- sinh_带有Python示例的math.sinh()方法
- 中英文对照 —— 宗教
- Ethereum Casper 101
- JAVA酒店管理系统
- matlab fft2 fftshift,matlab fft fftshift
- [ZT]大型企业局域网安全解决方案
- 开源代码检测FOSSID
- 【机房报修管理系统】1.简介篇 机房报修管理系统简介
- 微信投票python脚本_微信刷票Python脚本教程
- LearnGL - 05 - Texture
- 【电子数据取证】8个门道儿
- 什么是数据类型?数据类型有什么用?
- 小猫爪:i.MX RT1050学习笔记7-Power Supply
- Shell语言基本语法总结(4)正则表达式与文本处理之grep
- Nokia手机工程命令