当前位置:

JAVA 命令行运行_J2SE_Java

说到Java命令行运行,我们就不得不谈到String[] args, 我在JAVA网络编程这篇文章中的例程,已经演示了如何利用String[] args的值传到程序里面。那么关于Java命令行运行的指令到底是什么样的呢?

基础编译与运行命令

假设我们有一个文件叫做name.java, 且我们已经cd到这个文件的根目录中,那么编译这个文件用到的命令是:

javac name.java 

执行完这条语句之后,就会生成name.class文件,也就是java字节码文件, 然后我们用:

java name

即可完成对字节码文件的运行。

没有package的情况

当一个java文件没有包的时候,直接用我们上面提到的方法就可以顺利运行。

有package的情况

在这种情况下,可以先按上面提到的方法先编译,然后cd到包路径的级别,然后进行下面的操作:

java packagename.name 

为什么用这种方法去加载运行一个类?很明显,在有包的情况下,在你尝试切入到文件所在目录去运行这个java文件的时候,会报出ClassLoader类的错误,这就意味着是类加载出了问题。熟悉类加载的同学应该都知道,类加载器在加载类的时候会根据你的 类全名+路径 进行加载,而当一个类拥有了包的时候,在它的类全名里面就会加上它的包名,所以你在根目录使用类全名加载肯定是不对的。所以我们要往上一层路径移动一下。

用命令行调用jar文件(无package的情况)

在目标文件的文件夹里面,将你想要打包的.class文件打成jar包。

jar -cvf test.jar name

修改jar文件中的META-INF/MANIFEST.MF文件

在最后加一行 Main-Class: name(注意:冒号和name间有一空格,否则报错-Invalid or corrupt jarfile C:/temp/bin/test.jar),然后回车,否则也报错-Failed to load Main-Class manifest attribute from
C:/temp/bin/test.jar

关于jar命令我们又有很多可以赘述的知识点,这里先略去,有时间有兴趣可再扩充。

用命令行调用jar文件(有package的情况)

基本步骤一样,就是在最后修改.MF文件的时候,需要写上类全名。

关于命令行赋值的问题

再啰嗦一句,我们传入的参数是String[ ]类型的,所以你只管在文件名后面继续输入你的变量就是了,java会自动将文件名后面的输入解析为输入的参数。

例如:java name my age is 18

name是我们的文件名,后面的四个字符串就组成了我们的String[] args。 

评论:

登录后发表评论




2023.01.28 群组聊天