java 命令行如何不进入文件目录编译 *.java 和运行 *.class ?

对于一个固定目录下的 *.java 和 *.class, 如何在命令行不进入 它们的目录的情况下 直接编译或运行它们?

首先我觉得应该分析下楼主的提问。以下讨论都在windows系统下进行,因为如果是Linux系统实际上是没有后缀名的概念的(Linux下的后缀只是方便人看,系统是不认的,所以可以随便改的),也就没有楼主说的.java和          .class这种说法了。

那么我们一般的windows系统都会有多个分区(A/B/C/D....盘),在不同的目录下自然可以创建同名的文件,比如每个盘下面都创建一个Test.java,那么如果此时在任意目录下执行javac  Test.java命令,很显然系统不可能知道你想要编译的到底是哪一个Test.java文件,所以肯定是不行的。于是windows命令行默认你需要操作的文件在当前目录下。也就是楼主说的进入到文件所在目录中,然后执行javac Test.java命令。

但是要想进入文件所在目录是比较麻烦的,因为cmd打开默认路径在C盘下,而我们的文件一般不会放在C盘下,所以我们一般至少需要两步操作才能将路径修改为我们想要的路径,比如我在H盘的Test文件夹下创建了Test.java文件,现在我想编译它:

完成了上述两步之后才能进行我们真正的操作,挺麻烦的,如果路径很长就更加费劲了。

基于上述理解,我认为楼主的问题应该翻译为怎样更加简单的直接编译.java文件和运行.class文件。

不先进入文件所在目录直接编译也不是不行,但是由于前面阐述的原因(会有同名文件导致歧义的问题),那就只能指定文件所在路径了,如下:

文件名前面加路径的方式可以编译,但是不能运行,因为java命令认为后面跟的东西就是类的名字,也就是认为类的名字是"h:/Test/Test"这个整体了,这自然是不行的。那么是否能直接java Test命令呢,答案还是不行,因为默认只会操作当前目录中的文件,这里也就是C:\Users\DELL路径下的文件,自然不存在Test.class文件,所以运行时还是要进入到目录中。这种方式明显还不如第一种。

重点*****楼主想要的方式******

下面是最方便的一种方式,那就是直接在文件所在位置打开命令行,这样命令行目录位置直接就跟文件所在位置一致,也就不需要在输入进入目录的命令了。如下所示:

回车之后可以看到直接打开了cmd界面,此时直接就在文件所在路径下,这样就可以省略进入目录的步骤了。如下所示:

综上,想要操作文件必须要指定路径,这是不能省略的,原因也说了。所不同的只是指定的方式简单还是复杂而已。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-09-11
你这是为什么鬼问题,Java 文件要被编译才能运行! 换句话说就是 JAVA虚拟机要找到你指定的java文件才能将它编译运行,不进入文件目录怎么找到文件和编译文件? 这明显脱离计算机寻址的概念。追问

那你 import java.util.* 怎么没有脱离计算机寻址的概念? 不就是添加了环境变量吗? 我就是想知道有没有类似的方法而已, 你这是什么鬼回答

第2个回答  2018-09-11
我也不清楚的
相似回答