`
stephen830
  • 浏览: 2978099 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

命令行运行java程序

    博客分类:
  • java
 
阅读更多

 

命令行运行java程序

 

方法1:

普通的jar文件

 

java -cp discard.jar:lib/javassist.jar:lib/netty-all-5.0.0.Alpha1.jar:lib/log4j-1.2.14.jar io.netty.example.discard.DiscardServer

 

其中 io.netty.example.discard.DiscardServer 为java的带main方法的类名

命令行中的jar文件是需要用到的,必须每一个都列出来,不能用*.jar通配符表示

 

方法2:

可运行的jar文件


 

 
 

run_discard.jar是可运行的jar文件,并且将运行类所需的全部jar类库集成为1个jar文件。导出的只有1个jar文件。

java -jar run_discard.jar

 

 

方法三:



 

run_discard_single.jar是可运行的jar文件,并且将运行类所需的全部jar文件存放到与文件run_discard_single.jar同一目录的run_discard_single_lib目录下。因此会导出一个jar文件和一个lib目录(如下图中的run_discard_single_lib目录),在lib目录下有所需的全部jar类库。



java -jar run_discard_single.jar

 

备注:lib目录名不要修改

 

解开run_discard_single.jar可以看到/META-INF/MANIFEST.MF内容为:

 

Manifest-Version: 1.0

Class-Path: . run_discard_single_lib/netty-all-5.0.0.Alpha1.jar run_di

 scard_single_lib/log4j-1.2.14.jar run_discard_single_lib/javassist.jar

Main-Class: io.netty.example.discard.DiscardServer

可以看到这个目录已经在使用中,如果修改了这个目录名,会导致程序无法运行。

 

 

 

JAVA和JAVAC 命令行

javac和java命令行中的-classpath选项
这是个很基础的问题,但是因为基本上都是用现有的IDE工具 来开发java程序,所以很少有人意识到这一点。
javac
-classpath,设定要搜索类的路径,可以是目录,jar文件,zip文件(里面都是class文件),会覆盖掉所有在CLASSPATH里面的设定。
-sourcepath, 设定要搜索编译所需java 文件的路径,可以是目录,jar文件,zip文件(里面都是java文件)。
所以一个完整的javac命令行应该是这样的,
假设abc.java在路径c:\src里面,在任何的目录的都可以执行以下命令来编译。
javac -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip -sourcepath c:\source\project1\src;c:\source\project2 \lib\src.jar;c:\source\project3\lib\src.zip c:\src\abc.java

表示编译需要c:\classed下面的class文件,c:\jar\abc.jar里面的class文件,c:\zip\abc.zip里面的class文件
还需要c:\source\project1\src下面的源文件,c:\source\project2 \lib\src.jar里面的源文件,c:\source\project3\lib\src.zip里面的源文件,
注意:jar,zip里面的源文件不会有什么改动,目录下的源文件,有可能会被重新编译。
java
-classpath, 设定要搜索的类的路径,可以是目录,jar文件,zip文件(里面都是class文件),会覆盖掉所有的CLASSPATH的设定。
由于所要执行的类也是要搜索的类的一部分,所以一定要把这个类的路径也放到-classpath的设置里面。
表现在,在要执行的类的路径里面执行java时,一定要添加上点号(.)标示本目录也要搜索。

假设abc.class在路径c:\src里面
可以在任何路径下执行以下命令
java -classpath c:\classes;
c:\jar\abc.jar;c:\zip\abc.zip;c:\src abc

问题:如果main.class属于c:\jar\abc.jar,并且在com.cnblogs.jeffchen这个包里,那么执行java -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip;com.cnblogs.jeffchen.main即可, 但是如果classpath中包含多个jar包呢?并且其他jar包中也有com.cnblogs.jeffchen会发生什么情况?错误?

在windows下,
文件路径的分割符为反斜杠  \  
类或者java文件列表的分割符为分号 ;

在linux下
文件路径的分隔符位斜杠 /
类或者java文件列表的分隔符为冒号 :

一个linux下编译和运行的例子
 /usr/local/java/bin/javac -classpath /tmp/javatest/lib/mail-1.3.3.jar -d /tmp/javatest/bin/ /tmp/javatest/src/jp/co/realseed/Capability.java

/usr/local/java/bin/java -classpath /tmp/javatest/lib/mail-1.3.3.jar:/tmp/javatest/bin/ jp.co.realseed.Capability

 

mac电脑上的例子

 

java -classpath /Users/zjq/workspace/PROJECT_nettydemo5.0.0alpha1/WebContent/WEB-INF/classes:/Users/zjq/workspace/PROJECT_nettydemo5.0.0alpha1/WebContent/WEB-INF/lib/javassist.jar:/Users/zjq/workspace/PROJECT_nettydemo5.0.0alpha1/WebContent/WEB-INF/lib/log4j-1.2.14.jar:/Users/zjq/workspace/PROJECT_nettydemo5.0.0alpha1/WebContent/WEB-INF/lib/netty-all-5.0.0.Alpha1.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/lib/tools.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/lib/dt.jar stephen.MyServer

 

  • 大小: 11.9 KB
  • 大小: 12.5 KB
  • 大小: 46.7 KB
  • 大小: 54.4 KB
  • 大小: 9.5 KB
  • 大小: 59.8 KB
分享到:
评论

相关推荐

    如何使用命令行方式运行java程序.mp4

    编程大力哥java视频 - 如何使用命令行方式运行java程序,这个视频介绍了如何使用windows自带的命令行工具来运行java程序

    Java程序设计基础:使用命令行方式开发Java程序.pptx

    使用命令行方式开发Java程序 使用命令行方式开发Java程序 Java程序的运行机制 了解Java程序的运行机制 掌握使用命令行方式开发Java程序的步骤 Java程序的运行机制 编写源程序 编译源程序 由Java解释器解释运行 字节...

    java源程序(五子棋)

    在Windows系统中,用户通常更习惯于执行.exe文件,而不是通过命令行运行Java程序。为了满足这一需求,开发者可能使用了像JAR2EXE这样的工具,将编译后的Java应用打包成.exe格式,这样非开发人员也能直接双击运行,...

    三种方法运行Java程,jdk,IDEA,notepad++.pdf

    通过命令行运行Java程序是最基础的方式。按下Windows键+R,输入cmd打开命令提示符。输入`java -version`或`javac -version`来验证JDK是否已成功安装。若无误,可以创建一个简单的Java程序,如HelloWorld.java,使用...

    使用Java编写基于命令行的程序

    - 当在命令行中运行Java程序时,如`java MyProgram arg1 arg2`,`arg1`和`arg2`就是传递给`main`方法的参数,它们存储在`args`数组中。 3. **System类**: - `System`类提供了与操作系统交互的方法,例如`System....

    java基础1---java概述(csdn)————程序.pdf

    配置好环境变量后,就可以在任何位置通过命令行运行Java程序。虽然可以使用简单的文本编辑器(如记事本)编写Java代码,但为了提高开发效率和代码质量,通常我们会选择集成开发环境(IDE),如IntelliJ IDEA或...

    Windows命令行运行程序

    命令行下快速运行程序集,在运行对话框中输入。

    java学习心得

    在学习这一概念时,可以通过在命令行运行Java程序,并添加`-verbose`参数来观察类加载的过程。例如,运行`java -verbose *.class`可以看到程序加载的类文件顺序,只有当我们实际使用到某个类的实例时,该类才会被...

    linux下运行java程序

    除了命令行方式,你还可以编写shell脚本或使用工具如`nohup`或`screen`来后台运行Java程序,使其在用户退出终端后继续运行。例如: ```bash nohup java -jar myapp.jar & ``` 对于大型项目,通常会使用如`start-...

    通过JAVA执行命令行程序

    在Java编程中,有时我们需要与操作系统进行交互,执行一些系统级别的任务,比如运行命令行程序。这通常是通过Java的Runtime类或ProcessBuilder类来实现的。本文将详细讲解如何通过Java执行命令行程序,以及在处理...

    dos命令测试java jar文件 命令行下运行JUnit测试 命令运行java

    在命令行下运行Java JAR文件,可以使用以下命令: ```bash java -jar jar_file_name.jar ``` 这里的`-jar`选项告诉Java虚拟机(JVM)直接从JAR文件中加载主类并执行。 接下来,我们讨论如何在命令行下运行JUnit...

    大海战SPRJAVA平台

    在Windows系统中,它位于JRE或JDK的bin目录下,当用户点击Java应用程序的图标或者通过命令行运行Java程序时,实际上是调用了这个java.exe来启动JVM并执行程序。 因此,为了成功运行“大海战SPR”游戏,用户需要完成...

    eclipse使用入门初级知识

    虽然Eclipse提供了方便的集成环境,但了解如何从命令行运行Java程序也是有益的。这需要使用JDK的`javac`编译器和`java`解释器。首先,确保JDK已安装并配置好环境变量,然后在命令行中导航到包含`.java`文件的目录,...

    一个计算机专业学生几年的编程经验汇总.pdf

    动态加载的实现可以通过在命令行运行Java程序时添加`-verbose`参数来观察。这个参数会详细地显示出被加载的类文件,帮助我们理解只有当类的实例被创建时,对应的类文件才会被加载到内存中。这一机制减少了程序启动时...

    如何使用Eclipse工具的教程

    虽然Eclipse提供了便捷的运行方式,但了解如何从命令行运行Java程序也是必要的。你需要知道Java的`javac`编译器和`java`解释器的位置,然后在命令行中执行相应的命令来编译和运行Java程序。 ### 7. 在Eclipse中调试...

    python 定时任务 定时运行jar程序 定时运行java程序 定时运行cmd命令

    定时任务,不是循环,可以自定义命令行,运行java程序,git命令,可以定时打包,更新、关机等操作,通过配置自定义时间 config.json 配置文件如下 { "timer": [ "10:00:00", "12:30:00", "20:00:00", "23:40...

    Eclipse教程.pdf

    - 虽然Eclipse提供了方便的运行方式,但了解如何在命令行运行Java程序也是必要的。你需要使用`javac`编译源代码,然后使用`java`命令运行`.class`文件。 7. **调试** - 调试是开发过程中的关键环节。在代码中设置...

    java编程实例[参考].pdf

    - 在命令行运行Java程序时,如`java GetArgs Hello`,`Hello`将作为参数传入`myargs`数组。 6. **字符串操作**: - `String s="Hello,Everyone!"` 声明了一个字符串变量。 - `System.out.println(s);` 打印字符...

    java基础习题

    4. **命令行参数**:当使用命令行运行Java程序并传递参数时,参数存储在`String[]`类型的`argv`数组中。如果尝试访问不存在的索引,如`argv[2]`,会抛出`ArrayIndexOutOfBoundsException`。答案:D 5. **图形用户...

    JAVA语言学习课件

    例如,通过`-D`选项在命令行运行Java程序时,我们可以添加新的系统属性,如`java -DmyProperty=MyValue Test9_2`。 `Properties`类是Java中处理属性键值对的关键类。它允许我们存储和检索名称与字符串值之间的映射...

Global site tag (gtag.js) - Google Analytics