先给出解决方案:需要执行javac把引入的包编译一下,之后就可以了,在src的目录下执行就可以了.想看细节过程继续往下看.
提示这个错误,通常是找不到包导致的,写程序要相信一句话,"程序永远没有错,错的一定是我自己".
本着这个原则,我检查了我的代码,我的代码很简单,两个文件加起来不过10行,语法也没有问题,那么肯定是在使用命令行时,出现在路径问题.我的两个文件如下
D:\project\java\2\src\user\Base.java
package user;
public class Base {
public void getName(){
System.out.println("name : tom");
}
}
D:\project\java\2\src\test\Blog.java
package test;
import user.Base;
public class Blog {
public static void main(String args[]){
Base b1 = new Base();
b1.getName();
}
}
在Blog.java文件中,引入user的Base,代码上看起来无懈可击,那么只有在命令行里找问题了.
最开始查找网上的解决方案,多数都是在说找不到包是因为没有在path路径里,需要用-classpath指定,我按这个方案也指定了下classpath,但是无效
之后我换了多种classpath指定的路径,都是无效的.之后我开始尝试使用IDE,手上有idea2020版,在把项目建好后,运行时显示"Error:Cannot determine path to 'tools.jar' library for 17 (E:/jdk)",搜索后发现原来我的idea只支持jdk14以下的,需要换个版本,然后去官网下载jdk14,这之间省略一万字,注册麻烦死了.换了jdk14之后,idea可以运行上面的代码了,说明代码确实没有问题,有问题的是运行环境.
在使用idea的时候,我发现它把所有的java都编译了一下,我在想之前提示的找不到包,会不会是指的找不到.class文件里的包,顺着这个思路,我把user/Baes.java编译了一下,在user目录下,生成了Base.class文件,这时我再去执行java test/Blog.java,一切都顺畅了.
由于是第一天学习JAVA,所以有些原理不确定,姑且先以现有知识下一个结论,就是"java找的包,需要先进行编译,引入包时import后面写的包名,就是包所在的路径" .等有一天知道自己不对,我会在后面批注的,也请看到的大神指点一二.