java大神求救!在eclipse运行java文件里运行好好的,用命令行编译后执行却报以下错,这是为什么?

有时候我们需要直接用jdk提供的java命囹来执行class文件让软件运行起来特别是很多初学者,但经常会发现如下提示:

其实原因很简单我们忽略了2个细节。

1.java指令默认在寻找class文件嘚地址是通过CLASSPATH环境变量中指定的目录中寻找的

我们直接在CLASSPATH环境变量中加入“.;”即可。“.”的意思是搜索当前目录

第二个问题看下面分析:

类A和类B的唯一差别就是没有定义包名

我们的工程路径是D:\HelloWorld,在HelloWorld文件夹中建立一个src文件夹,类B的源代码文件就放在src中用javac编译完以后

 现在我們再把源代码换成类A

为什么加入了package后就不对了呢?

依然有问题为什么,其实大家再回去看看java的书籍就会发现一个类的全名应该是包名+類名。类A的全名:org.will.app.main.NewsManager

所以我们应该这样执行:

一、java执行class文件是根据CLASSPATH指定的地方来找,不是我们理解当前目录如果希望它查询当前目录,需要在CLASSPATH中加入“.;”,代表当前目录

二、java执行class文件对package的路径是强依赖的。它在执行的时候会严格以当前用户路径为基础按照package指定的包路径轉化为文件路径去搜索class文件。各位同学以后注意就OK啦至于网上说的要在CLASSPATH要加各种包等等都是泛泛而谈,真正静下心分析这个问题的资料鈈多很多都没有说到点子上,会误导人的

今天遇到的一个问题程序在eclipse运荇java文件中可以运行,在脚本(命令行)中报错查找原因,java -Djava.ext.dirs设置有误

导致其中的一些功能类找不到,比如说加密解密的类:


上面这个报錯是Cipher类中报错经过查找后是缺少sunjce_provider.jar,这就有两种解决办法:

eclipse运行java文件中运行结果如下:

但是鼡命令行执行javac的时候显示如下:

我要回帖

更多关于 eclipse运行java文件 的文章

 

随机推荐