过程中遇到的几个问题记录如下:

1.java -version正常显示java版本,但是javac却显示【不是内部外部命令】

原因:JAVA_HOME设置成了用户环境变量,Path里用%JAVA_HOME%时没有正确解释出来,在cmd里echo %Path%就能看出来了。

解决方法:不用JAVA_HOME,直接在Path里添加绝对路径,到bin为止。

2. 如果程序中声明了包名,即首行写了package com.xxx;

那么如果按照一般的编译方式 javac 源文件名.java

会在当前目录下生成class文件。

然后直接用:java源文件名执行,则会报错。

出现java.lang.NoClassDefFoundError

产生问题的原因

包的意义在于产生一种目录结构,所以class文件必须位于相应的目录层次结构中。

以package com.xxx为例:

一种解决方式是手工建立com文件夹,里面建立xxx文件夹,把生成的class文件放在目录结构中,并且执行的时候采用java 完整类名(即带上包名)才能够执行。

不需要手动建立文件夹的解决手段

使用编译参数 -d的解决方法:

编译的时候可以在javac命令中采用-d指定存放生成的类文件的位置。

-d . 可以在当前目录下生成。

用如下命令:

javac –d . 源文件名.java

则编译后在当前目录下,编译器会生成包的文件目录层次结构,并且把class文件放入其中。

如果不用“.”,也可以指定目录。

用java命令执行的时候需要将包的信息全部带上,即用完整的加包名的形式执行。

执行:

java 完整类名

3.import的时候,如果要引入整个包,需要用【.*】,如果不这样,则一定要具体到引用包里的哪个类。只是【import 包名】是不对的。


版权声明:本文为weixin_36387104原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_36387104/article/details/114049886