日期:2014-05-20  浏览次数:20909 次

直接用java(不用预先编译为.class)命令运行.java文件是什么原理?
请问有些xxx.java文件可以直接用java   svm_train   -classpath   xx.jar   <argument>   这种方式运行(未生成.class文件),是什么原理啊?
      我只知道一般的java文件是要用javac先编译生成.class文件,然后再用java来解释执行的.我试过用正常方法编译这个svm_train.java,也能正常生成.class,但是解释执行时就会报错:

Exception   in   thread   "main "   java.lang.NoClassDefFoundError:   svm_train/class

这又是什么缘故?敬请高手解答

------解决方案--------------------
-classpath xx.jar 不是要这个.jar文件吗?你的svm_train.java用到他的类啊
------解决方案--------------------
编译后 直接CLASSLOAD到内存了?
------解决方案--------------------
NoClassDefFoundError 没找到类 main的入口类名称是不是错了
------解决方案--------------------
java *** -classpath **.jar
是运行 **.jar中的***类
不涉及.java文件
------解决方案--------------------
1.java里本来提供的有javac功能的类
2.如果在一个类里,进行如下功能:
@通过参数获得一个源文件,编译,运行,再删除class文件

对于用户来说,就好比直接运行了一个.java文件
------解决方案--------------------
对于上面那位朋友说的

java *** -classpath **.jar
是运行 **.jar中的***类

有些异议。-classpath 应该只是指定类的路径名。表明可以find这个路径下的所有类库。实际解释运行的还是跟在java后面的文件。

当执行“ java *** ”时, java.exe 首先找到 JRE ( Java Runtime Environment ),接着找到位于 JRE 之中的 jvm.dll ,最后载入 jvm.dll 并启动虚拟机。 虚拟机所能识别的是.class的字节码文件。如果遇到.java文件应该会报错阿!

没遇到过这样的事。不知道是不是你的那个.java文件有什么特殊的地方?难道能自动实现编译功能?

关注,等高手指点。