可执行 jar | 到底如何执行
dog
│ pom.xml
│
└───src
└───main
└───java
└───cn
└───zno
Dog.java
bark
│ pom.xml
│
└───src
└───main
└───java
└───cn
└───zno
Main.java
package cn.zno;
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.bark(args[0]);
}
}
package cn.zno;
public class Dog {
public void bark(String str) {
System.out.println(str);
}
}
dog.jar
bark.jar
F:\>java -cp F:\e\dog.jar;F:\e\bark.jar; cn.zno.Main wang~wang~
wang~wang~
ps:When you use the -jar option, the specified JAR file is the source of all user classes, and other class path settings are ignored.
意思是:如果用-jar命令执行可执行jar包,那么-cp 将失效
目前采用:执行类的main函数的方式
ps:Note that the -cp parameter must contain only JAR files;
意思是:-cp 不能通过指定文件夹来发现jar,必须通过枚举全部的jar。window ; 分隔 linux : 分隔
方式二:通过

Manifest-Version: 1.0
Main-Class: cn.zno.Main
Class-Path: app-a-1.0.jar app-b-1.0.jar
补充:具体如何使用 -cp 或 -classpath
https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/intro.html
-cp or -classpath |
Specifies a list of directories, JAR archives, and ZIP archives to search for class files. Class path entries are separated by semicolons (;) in Windows or colons (:) in Linux. Specifying
-classpath or -cp overrides any setting of the CLASSPATH environment variable. |
1)方式一:通过设置 CLASSPATH 环境变量
① 设置系统环境变量
② 设置临时环境变量
2)方式二:通过 -cp 或 -classpath 指定,此优先级高于环境变量
非jar包测试
1)默认从当前文件夹找类
D:\test1>javac Test.java D:\test1>java Test
Hello!
2)如果没有环境变量也没有指定classpath 当前目录也没有类就会失败
D:\test1>cd ../test2 D:\test2>java Test
错误: 找不到或无法加载主类 Test
3)可以通过设置环境变量CLASSPATH=xxx(等号左右没空格)
D:\test2>set CLASSPATH=D:\test1 D:\test2>java Test
Hello!
4)可以覆盖或拼接CLASSPATH
D:\test2>set CLASSPATH=D:\test2 D:\test2>java Test
错误: 找不到或无法加载主类 Test D:\test2>set CLASSPATH=%CLASSPATH%;D:\test1 D:\test2>echo %CLASSPATH%
D:\test2;D:\tset1;D:\test1 D:\test2>java Test
Hello!
5)-cp 或 -classpath 的优先级要高于环境变量
D:\test2>java -cp D:\test1 Test
Hello! D:\test2>echo %CLASSPATH%
D:\test2 D:\test2>set CLASSPATH=D:\test1 D:\test2>java Test
Hello! D:\test2>java -cp D:\test2 Test
错误: 找不到或无法加载主类 Test
jar包测试
1)没有设置环境变量,没有使用-classpath,但是也不能从当前文件夹中的jar包中找到目标类
D:\test>dir /B
bark.jar
dog.jar D:\test>java Test
错误: 找不到或无法加载主类 Test
2)jar 只能指定为具体的路径,如果有10个,那需要把10个全部设置到classpath里
D:\test>java -cp D:\test\bark.jar;D:\test\dog.jar Test
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name config/bark, locale zh_CN
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:)
at Test.main(Test.java:)
注:
可执行 jar | 到底如何执行的更多相关文章
- 在IDEA中使用gradle配置打可执行jar包[可执行jar与其所依赖的jar分离]
下面是我的项目的build.gradle文件的所有内容,注意高亮部分是关键: group 'com.xbs' version '1.0-SNAPSHOT' apply plugin: 'java' a ...
- 执行jar包或执行其中的某个类
执行jar包,默认执行javafile中指定的main程序java -jar jar包例如 java -jar test.jar执行依赖其他jar包的class: java -cp .;E:\tool ...
- springboot打包的问题可执行jar和不可执行jar
具体解释可以参看:https://www.cnblogs.com/liaojie970/p/9007577.html 如果只是想要依赖那么可以将springboot自带的打包插件换掉就可以了,换为如下 ...
- Java:执行jar文件命令
Java:执行jar文件命令 执行jar文件命令: java -jar test.jar win7系统切换目录命令: cd /d d:/test
- SpringBoot+Maven多模块项目(创建、依赖、打包可执行jar包部署测试)完整流程
一,创建Maven多模块项目先建立外层父工程 File →new →project 选择Spring Initializr Next下一步到以下页面 工程结构如下 ...
- 可执行jar包
我已经解决了这个问题,在eclipse中有一个打包工具,可以将程序打包成.jar文件: 右键要打包的 project--->Export--->Java--->JAR file--- ...
- Spring Boot 打包成的可执行 jar ,为什么不能被其他项目依赖?
前两天被人问到这样一个问题: "松哥,为什么我的 Spring Boot 项目打包成的 jar ,被其他项目依赖之后,总是报找不到类的错误?" 大伙有这样的疑问,就是因为还没搞清楚 ...
- java 执行 jar 包中的 main 方法
java 执行 jar 包中的 main 方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar执行后总是运行指定的主方法,如果 jar 中有多 ...
- linux下shell脚本执行jar文件
最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...
随机推荐
- Django日志系统
在Django中使用的日志系统是基于Python中的loggin模块. 首先简单介绍下logging. 一 Loggin模块简介 loggin模块主要包含以下四个部分: Loggers ...
- php使用pthreads v3多线程的抓取新浪新闻信息
我们使用pthreads,来写一个多线程的抓取页面小程序,把结果存到数据库里. 数据表结构如下: CREATE TABLE `tb_sina` ( `id` int(11) unsigned NOT ...
- 产品密钥无法激活成功,最后使用visio2013激活软件激活成功。
装了visio2013,使用网上搜索的产品密钥,没有一个能够激活成功.最后发现了visio的一个激活软件KMSpico,成功激活. 破解工具 KMSpico_setup.exe 下载地址: http: ...
- socket网络编程扫盲篇
socket 是“套接字”的意思,是计算机之间进行通信的一种约定,也可以认为是一种技术.通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据. socket 的 ...
- PAT 1039 到底买不买(20)(20 分)
1039 到底买不买(20)(20 分) 小红想买些珠子做一串自己喜欢的珠串.卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖.于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要 ...
- CH#56C 异象石
一道LCA 原题链接 先跑一边\(dfs\),求出每个节点的时间戳,如果我们将有异象石的节点按时间戳从小到大的顺序排列,累加相邻两节点之间的距离(首尾相邻),会发现总和就是答案的两倍. 于是我们只需要 ...
- Qt样式表的使用
Qt中可以灵活的使用层叠样式表(CSS),其语法和CSS很相似.因为HTML CSS的灵活性,所以可以很方便的为QT界面设计自己需要的外观.除了子类化Style类,使用QT样式表(QStyleShee ...
- PS故障风海报制作技术分享
1.首先找一张看起来很酷的图(也可以选择自己喜欢的图片): 2. 复制图层,点击添加图层样式,选择混合选项,在高级混合里面的通道选项,有R.G.B三个通道选项,默认是全部勾选的状态,选择其中一个勾掉( ...
- How to return AJAX errors from Laravel Controller?
Questions: I am building a REST API with Laravel 5. In Laravel 5, you can subclassApp\Http\Requests\ ...
- Python编程笔记(第二篇)二进制、字符编码、数据类型
一.二进制 bin() 在python中可以用bin()内置函数获取一个十进制的数的二进制 计算机容量单位 8bit = 1 bytes 字节,最小的存储单位,1bytes缩写为1B 1KB = 10 ...