Java命令行执行那些事

来源:互联网 发布:2016网络最新最火的词 编辑:程序博客网 时间:2024/05/19 13:42

在刚开始学java的时候,从dos命令行(这里只针对Windows环境下)执行Java程序是一个很不错的尝试。现在大体总结下自己在尝试后遇到的一些问题,及解决办法。

首先,通过命令行查看是否安装Java程序,以及打印classpath和java_home变量:

环境变量输出
通过这三个,就可以得知你环境配置是否ok
如果执行java -version报错 或者说找不到,那应该是没有配置java path环境,请自行百度配置。

Java相关的术语说明
这里仅说明下今天的主题:classpath,至于java_home和path请自行百度。

设置CLASSPATH:
这个变量设置很重要,它的作用就是 在执行java xxx.class的时候,告诉jvm去那个目录下找这个xxx去执行。下文主要围绕这个来说明一些问题。

现在,开始我们一个Java简单程序的编写:

1.在桌面右键简历一个Hello.java

/***author:九易扬*///package com.godsdk;public class Hello{     public static void main(String[]args){          //System.out.println("hello world : hello");     }}class _a{     public static void main(String[]args){          System.out.println("hello world:_a");     }}class 1Test{     public static void main(String[]args){          System.out.println("hello world:1Test");     }}class hello{     public static void main(String[]args){          System.out.println("hello world:hello");     }}

我们看到 ,我们在这个名为Hello.java文件中写了几个类,Hello、_a、1Test、hello;

现在我们,对该文件进行编译下:

首次编译执行

报错了,相信都清楚这个问题,这个主要是说明下 类名 的一些命名问题,至于具体就不想详述了,但要强调一点,如下问,我们把1Test给干掉,然后在编译:

再次编译

奇怪,怎么没声称hello.class,先不管,执行一把先。

编译后执行

现象很奇怪,这里有两个问题:
1.桌面明明存在编译后的Hello.class,但在执行java Hello的时候报错了。
2.执行java hello的时候,是可以执行的,并且输出hello类中的输出;

现在 我们把详细信息打印出来瞧瞧:
error
error info

!!!!! 报ClassNotFound

也就是说 没有找到Hello,但却找到了hello。这里就说明hello把Hello给覆盖了;所以Java类名在编译的时候大小写不敏感。

Java的一些规定
1、若在源文件中定义了声明为public的类,需要将类所在的源文件的文件名取名为类名
2、在同一个源文件中有且只能有一个定义为public的类
3、编译时文件名大小写是不敏感的,执行的时候加载的类名是大小写敏感的

但是在执行的时候大小写铭感的

所以,上文中 后面的hello把Hello给覆盖了,在执行的时候执行java Hello的时候就报错了。

下面,说另一个问题,上文中,我在执行的时候 写过 cd Desktop

这一句的作用是什么呢。从最上面大家看到我的classpath环境为“.”,其表示为当前目录

而最初的我的目录是:
dir:C:\Users\Administrator
也就是说 ,我的classpath=”C:\Users\Administrator”

执行之后 我的目录是:
dir:C:\Users\Administrator\Desttop
classpath=”C:\Users\Administrator\Desttop”

关注的一点来了,因为我的.class文件在
C:\Users\Administrator\Desttop这个目录,所以 如果我在 最初的dos环境下执行 java hello的话,jvm默认就会去 C:\Users\Administrator路劲下去找hello.class,所以执行就报错了。

这个,可以手动试试

当然,如果有人非要在 C:\Users\Administrator去执行 C:\Users\Administrator\Desttop目录下的hello.class,
可以这样
加classpath执行
上文中 我把Desktop携程Desttop,请自改之。

从这里 执行cmd可以看出 采用
Java -cp C:\Users\Administrator\Desktop hello hello world:hello可以就执行了,其中-cp就是指定classpath环境变量,即classpath所在目录。

2.带package 编译

首先将上文中的Hello.java文件中的package那一行的注释去掉,然后执行

包名编译

就会发现按包名目录来生成想要的class文件。

路径编译

扩展一点,其实在windows环境下包名也可以大写,但最好不要在正式工程中尝试。

这是因为为了适应不同的操作系统而做的改变吧。因为Unix系的操作系统是大小写敏感的,所以如果在操作系统中”COM”和”com”两个文件夹被认为是两个不同的文件夹;而在Windows操作系统中,大小写是不敏感的,因此”COM”和”com”两个文件夹为被认为是同一个文件夹。正因为这样,如果有人正好在Unix系的操作系统下写了两个包名。

0 0
原创粉丝点击