命令行运行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
相关推荐
编程大力哥java视频 - 如何使用命令行方式运行java程序,这个视频介绍了如何使用windows自带的命令行工具来运行java程序
使用命令行方式开发Java程序 使用命令行方式开发Java程序 Java程序的运行机制 了解Java程序的运行机制 掌握使用命令行方式开发Java程序的步骤 Java程序的运行机制 编写源程序 编译源程序 由Java解释器解释运行 字节...
- 使用命令行运行Java程序时,确保命令行的当前目录正确,或者使用完整的jar包路径,例如java -jar /path/to/oxing.demo.javaproxy-1.0.jar。 以上内容涵盖了Java环境在Windows和Linux系统下的安装配置步骤,以及...
在Windows系统中,用户通常更习惯于执行.exe文件,而不是通过命令行运行Java程序。为了满足这一需求,开发者可能使用了像JAR2EXE这样的工具,将编译后的Java应用打包成.exe格式,这样非开发人员也能直接双击运行,...
通过命令行运行Java程序是最基础的方式。按下Windows键+R,输入cmd打开命令提示符。输入`java -version`或`javac -version`来验证JDK是否已成功安装。若无误,可以创建一个简单的Java程序,如HelloWorld.java,使用...
- 当在命令行中运行Java程序时,如`java MyProgram arg1 arg2`,`arg1`和`arg2`就是传递给`main`方法的参数,它们存储在`args`数组中。 3. **System类**: - `System`类提供了与操作系统交互的方法,例如`System....
配置好环境变量后,就可以在任何位置通过命令行运行Java程序。虽然可以使用简单的文本编辑器(如记事本)编写Java代码,但为了提高开发效率和代码质量,通常我们会选择集成开发环境(IDE),如IntelliJ IDEA或...
Java是一种广泛使用的编程语言和计算平台,它拥有丰富的命令行工具集合,这些工具支持从开发到部署的整个Java应用程序生命周期。这些工具包含在JDK(Java Development Kit)中,是开发者日常工作的基础。下面将对...
### Java命令行运行参数详解 #### 一、概述 Java作为一种广泛使用的编程语言,其运行依赖于Java虚拟机(JVM)。为了优化JVM的性能,开发者可以通过命令行传递一系列参数来控制JVM的行为。本文将详细介绍Java命令行...
在日常的软件开发过程中,开发者经常会遇到需要在命令行环境下编译和运行Java程序的情况。本文将详细介绍如何在DOS(Disk Operating System)环境下,通过命令行工具编译和运行Java程序。 #### 创建目录结构 在...
在学习这一概念时,可以通过在命令行运行Java程序,并添加`-verbose`参数来观察类加载的过程。例如,运行`java -verbose *.class`可以看到程序加载的类文件顺序,只有当我们实际使用到某个类的实例时,该类才会被...
根据提供的信息,我们可以总结出以下有关“Windows命令行运行程序”的详细知识点: ### 1. Windows 命令行概述 - **定义**: Windows 命令行是一种文本界面,用户可以通过输入特定命令来控制操作系统执行任务。 - *...
在命令行运行Java程序之前,需要配置环境变量。例如,设置`JAVA_HOME`环境变量来指定JDK的安装目录,并将`%JAVA_HOME%\bin`添加到系统路径`PATH`中,以便能在任何目录下运行Java命令。 3. Java工具介绍: - `applet...
除了命令行方式,你还可以编写shell脚本或使用工具如`nohup`或`screen`来后台运行Java程序,使其在用户退出终端后继续运行。例如: ```bash nohup java -jar myapp.jar & ``` 对于大型项目,通常会使用如`start-...
在Java编程中,有时我们需要与操作系统进行交互,执行一些系统级别的任务,比如运行命令行程序。这通常是通过Java的Runtime类或ProcessBuilder类来实现的。本文将详细讲解如何通过Java执行命令行程序,以及在处理...
在命令行下运行Java JAR文件,可以使用以下命令: ```bash java -jar jar_file_name.jar ``` 这里的`-jar`选项告诉Java虚拟机(JVM)直接从JAR文件中加载主类并执行。 接下来,我们讨论如何在命令行下运行JUnit...
通过上述分析,我们可以看出,在命令行下编译和运行Java程序时,需要注意以下几个关键点: - 确保源文件的位置与声明的包结构一致。 - 正确地使用 `javac` 和 `java` 命令,包括指定类路径等参数。 - 对于复杂的项目...
虽然Eclipse提供了方便的集成环境,但了解如何从命令行运行Java程序也是有益的。这需要使用JDK的`javac`编译器和`java`解释器。首先,确保JDK已安装并配置好环境变量,然后在命令行中导航到包含`.java`文件的目录,...
通过以上步骤,你可以在DOS环境下高效地编译和运行Java程序,这对于初学者来说是非常有用的实践,因为它能让你更好地理解Java程序的生命周期和命令行工具的使用。而批处理文件的创建则进一步提升了工作效率,尤其当...
JAVA Application是指独立的JAVA程序,可以运行在命令行或图形用户界面中。JAVA Applet是指嵌入到Web页面中的小程序,可以在浏览器中运行。本资源提供了一个简单的JAVA Application和JAVA Applet的示例代码,演示了...