问题1:
通过bat指令运行java编译后class文件,报类找不到的错误。
C:\Users\Administrator\Desktop>
C:\Users\Administrator\Desktop>javac Hello.java
C:\Users\Administrator\Desktop>java hello
Exception in thread "main" java.lang.NoClassDefFoundError: hello (wrong name: Hello)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: hello. Program will exit.
原因分析:在文件通过javac编译文件后,调用时写成了小写字母的名称:
解决:
Hello world!!!
C:\Users\Administrator\Desktop>
注:java代码编程是严格区分大小写的,另外,在调用文件、变量等等内容时,最好保持文件原有的名称,以免出现现在这种情况。
附:bat指令调用java的class文件:
问题2:
带路径java编译时成功的,但是java显示时报错:
C:\Users\Administrator\Desktop>javac C:\Users\Administrator\Desktop\Hello.java
C:\Users\Administrator\Desktop>java C:\Users\Administrator\Desktop\Hello
Exception in thread "main" java.lang.NoClassDefFoundError: C:\Users\Administrato
r\Desktop\Hello
Caused by: java.lang.ClassNotFoundException: C:\Users\Administrator\Desktop\Hell
o
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: C:\Users\Administrator\Desktop\Hello. Program wi
ll exit.
C:\Users\Administrator\Desktop>
分析:未分析出原因??
解决:
通过cd 到某个路径下,调用java className(不能带后缀.class)
附 :bat文件,执行代码:
::%~d0 是当前盘符;%cd%是当前盘符
set "fileName=Plus"
set "b=%cd%"
cd "%b%\\class"
java "%fileName%"
pause
说明1:java文件里的包(java脚本第一句:package com.home.lib.java;),如果没有路径的话,必须去掉。
说明2:bat文件的命名不要和系统里path里的值有相同的,不然会出一些看起来很奇怪的问题,如指令重复下发一次等等。
说明3:图片中的1、2是按键输入的值。