Java找不到主类引发的探究

一、

同一目录下,两个文件

t.java

console.bat

t.java:

package t;
public class t{
	public static void main(String[] args){
		System.out.println("Hello world!");
	}
}

console.bat:

@ECHO OFF
SET JAVAHOME=D:\Java\JDK-8u91-1.8.0_91
SET PATH=%PATH%;%JAVAHOME%\bin;%JAVAHOME%\lib\dt.jar;%JAVAHOME%\bin\tools.jar;.;
cmd

(console在此处配置路径)

打开console.bat,在其中编译并运行t.java,结果如下:

如果java靠环境变量找到java类文件,那么java t按理应该是可以运行的(因为当前目录已被包含在环境变量中,参见console.bat)

二、

如果把t.java中的package t;注释掉就可以运行。这就跟我们平常直接新建一个java文件,码码完直接命令行运行是一样的。这就可以用classpath来解释t.class是怎么被找到的。如果把当前路径去掉,又会提示找不到主类。所以,可以推断,主类是通过PATH中的路径找到的。可是这又怎么解释第一种情况呢?

三、

如图,t1文件夹中也有一个t1.java文件,它跟t0.java的区别在于它有package t1;, 而t0.java并没有package语句。

两者运行情况如下:

对于t0.java,一个是t0.class==classpath/t0/t0;一个是classpath+=t0,t0.class==classpath/t0。t1.java相似。依据上面的情况,也就是说,如果java命令后的类文件没有包含父目录,那么该源文件本身就没有package语句,反之。所以,java不仅靠PATH路径来找的类文件,而它还通过这两种殊途同归的方式来检查package,以至于不会发生这种“java文件自身声明所在包与实际所在包不符”的情况。

结论:java x/x/x/aClass能运行意味着aClass在package x.x.x中。

以上全属推论。

时间: 2024-11-02 19:43:04

Java找不到主类引发的探究的相关文章

Java 找不到主类错误

Eclipse 运行java 程序,突然出现错误:没有或找不到主类. 在网上找了好多办法,都不行. jdk环境配置啊-->这个一般不会出错,因为以前都不会出现这种问题. 查看项目配置啥的-->这也没用,因为以前都没事. 在cmd 运行java程序,可以通过编译,还有,程序中如果有package语句,无法执行.去掉package,程序也出来了. 可是在eclipse下就是不行. 整了半天,在项目右键下,突然发现了 Build Project, 艹,build一下,好了.这eclipse 是抽了什

在有main函数的前提下 eclipse找不到主类

有时候在测试类的时候eclipse会莫名奇妙的提示找不到主类   接下来分别有几种解决办法 1.在项目上右击> Builder Path -> Configure Build Path -> 选择Source面板 再点Add Folder, 把源代码所在的包路径的上层目录加进来,而且如果你是把两个类写在一个文件里的话,你在右键选择Run As Java Appication 的时候,要把光标至于包括main方法的类上 2复制粘贴带main函数的类 创建一个新的类把代码复制进去 即可ok

eclipse中执行程序显示找不到主类

这种情况一般出现在工程中已编译有class文件的java文件,而后面新建的java则不会出现问题.这种情况说明工程bin目录下对应的class文件不存在或者已损坏,修复即可解决问题. 1 进入src对应目录中,在后台用java命令直接编译如javac Test.java.调用到的类也需要手动一一编译. 2 将编译好的class文件复制到工程bin目录中对应目录中. 3 在eclipse中直接运行即可. eclipse中执行程序显示找不到主类

eclipse导入新项目后,运行时找不到主类解决办法

最近在学习多线程,今天下了一套源码,导入到eclipse里后,随便找了个带main()的类试了一下,找不到主类. 首先想到的解决办法是把工程clean一下,并没有用.去网上找了一个遍终于找到了管用的方法.方法如下: 把properties属性里的java compiler-->building-->abort build when build path errors occur 前的勾去掉这样就ok 了 方法引用地址:http://cancait.blog.163.com/blog/stati

idea 启动springboot项目报找不到主类

今天搭建的一个新springboot项目,运行启动类时控制报找不到主类错误 解决方法: 在idea控制台输入mvn clean install命令 原文地址:https://www.cnblogs.com/kingsonfu/p/10261167.html

eclipse找不到主类或无法加载主类

有时候 Eclipse 会发神经,好端端的 project 就这么编译不了了,连 Hello World 都会报“找不到或无法加载主类”的错误,我已经遇到好几次了,以前是懒得深究就直接重建project了,但遇到次数多了必须深究下了,现总结几种解决方案,大家根据自己的情况逐一尝试即可. 1.是因为.java文件不在项目的src路径内,也就是说源代码未被eclipse编译,字节码不存在无法运行了在项目名上右键 -> Builder Path -> Configure Build Path -&g

【maven】成功生成jar包,提示找不到主类?

问题描述: ??使用maven构建zookeeper项目,完成一个简单的创建组的实例,代码调试完成,使用mvn clean install成功打包得到了jar包,但是在执行时发现使用java -cp target/XXX.jar com.App却提示"找不到或者无法加载主类",用java -jar对jar包查看,提示"包中没有主清单属性". 解决办法: ??首先在网上查询了很多相关的问题,逐一进行了排查,包括环境变量的配置.CLASSPATH中有没有当前路径..主类

idea启动spring boot无法加载或找不到主类

问题产生原因:moudle名称修改,导致项目启动不了 在Terminal界面中执行以下三个命令,我在执行第一个命令的时候报了一个找不到dependency的错误,把那个报错的dependency删了就好了. mvn clean compile,将项目重新编译 mvn install,打包 原文地址:https://www.cnblogs.com/huanghuanghui/p/10151580.html

JAVA之中出现无法加载主类的情况解决方法

j今天打代码的时候出现了无法加载主类的情况,我就收集了一些,java无法加载主类的方法 ava无法加载主类解决办法 今天启动项目,又遇到找不到或无法加载主类的情况,清除项目后无法编译,class文件下没有.class文件,至少遇到3次这个问题了,隔一段时间就出现这个问题,而且每次解决的方法都还不相同,这个问题的标识就是项目上有红色差号或者叹号,原因诸多也说不清楚,有的时候是jar包缺或者引入了无用的jar包,有时候开发软件编译停顿了反应慢等等,今天特意总结解决此问题的方法,和大家分享一下: 1.