直接用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文件有什么特殊的地方?难道能自动实现编译功能?
关注,等高手指点。