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 : 分隔

方式二:通过

JAR Manifest
指定 Class-Path

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 | 到底如何执行的更多相关文章

  1. 在IDEA中使用gradle配置打可执行jar包[可执行jar与其所依赖的jar分离]

    下面是我的项目的build.gradle文件的所有内容,注意高亮部分是关键: group 'com.xbs' version '1.0-SNAPSHOT' apply plugin: 'java' a ...

  2. 执行jar包或执行其中的某个类

    执行jar包,默认执行javafile中指定的main程序java -jar jar包例如 java -jar test.jar执行依赖其他jar包的class: java -cp .;E:\tool ...

  3. springboot打包的问题可执行jar和不可执行jar

    具体解释可以参看:https://www.cnblogs.com/liaojie970/p/9007577.html 如果只是想要依赖那么可以将springboot自带的打包插件换掉就可以了,换为如下 ...

  4. Java:执行jar文件命令

    Java:执行jar文件命令 执行jar文件命令: java -jar test.jar win7系统切换目录命令: cd /d d:/test

  5. SpringBoot+Maven多模块项目(创建、依赖、打包可执行jar包部署测试)完整流程

    一,创建Maven多模块项目先建立外层父工程         File →new →project  选择Spring Initializr          Next下一步到以下页面 工程结构如下 ...

  6. 可执行jar包

    我已经解决了这个问题,在eclipse中有一个打包工具,可以将程序打包成.jar文件: 右键要打包的 project--->Export--->Java--->JAR file--- ...

  7. Spring Boot 打包成的可执行 jar ,为什么不能被其他项目依赖?

    前两天被人问到这样一个问题: "松哥,为什么我的 Spring Boot 项目打包成的 jar ,被其他项目依赖之后,总是报找不到类的错误?" 大伙有这样的疑问,就是因为还没搞清楚 ...

  8. java 执行 jar 包中的 main 方法

    java 执行 jar 包中的 main 方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar执行后总是运行指定的主方法,如果 jar 中有多 ...

  9. linux下shell脚本执行jar文件

    最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...

随机推荐

  1. CALL transaction 的用法-传内表

    使用memory (这个方法和第二种方式的区别是可以传输复选框的值) data:  wfbomcom type rc29n.  move-corresponding bom_key to wfbomc ...

  2. pthreads v3在centos7下的安装与配置

    我的centos版本是7.4.1708,php的版本是7.2.4(注意要是线程安全版),如下图所示: 首先我们在如下网址下载好pthreads的源码: http://pecl.php.net/pack ...

  3. gearman的持久化,以mysql的方式

    1.为什么要持久化? gearman的job server中的工作队列存储在内存中,一旦服务器有未处理的任务时重启或者宕机,那么这些任务就会丢失.持久化存储队列可以允许添加后台任务,并将其存储在外部的 ...

  4. Struts2框架的数据封装一之属性封装(属性封装的第二种方式:封装成javaBean)

    Struts2中提供了两类数据封装的方式? 第一种方式:属性驱动(有两种方式:一个对属性,另外一个是将参数封装到javaBean中) B. 在页面上,使用OGNL表达式进行数据封装.(将参数封装到ja ...

  5. sqlite c#

    https://www.cnblogs.com/icebutterfly/p/7850689.html https://www.cnblogs.com/sdadx/p/7127098.html

  6. 8I - 吃糖果

    HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样:可是Gardon不知道是否存在一种吃 ...

  7. ajax登陆页面

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. hdu 1757 (矩阵快速幂) 一个简单的问题 一个简单的开始

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1757 题意不难理解,当x小于10的时候,数列f(x)=x,当x大于等于10的时候f(x) = a0 * ...

  9. 调试程序时如何用syslog来打印信息

    转自:https://www.cnblogs.com/vigarbuaa/archive/2013/02/05/2892544.html Linux下C语言编程的-把程序输出信息加到系统日志里去关键词 ...

  10. 转:百度MySql5.7安装配置

    原文地址:http://jingyan.baidu.com/article/8cdccae946133f315513cd6a.html MySQL 5.7以上版本的配置和以前有所不同,在这里与大家分享 ...