我有一个Main类包含main()方法声明到名为的包中mainPkg.
现在我使用 ANT 脚本使用 Javac 执行编译,该目标:
<target name="compile" depends="clean">
<mkdir dir="build/classes"/>
<echo>INTO compile TASK</echo>
<echo>BASE DIR: ${basedir}</echo>
<echo>CLASSPATH: ${basedir}\lib\ojdbc6.jar</echo>
<javac srcdir="src/mainPkg/" destdir="build/classes">
<classpath>
<fileset refid="classpath.compile"/>
</classpath>
</javac>
</target>
好的,它可以工作并创建编译的主类该目录中的文件(位于项目根目录中):构建/类/mainPkg/(最后一个目录有包名)
好吧,现在我的疑问是:为什么如果我进入构建/类/文件夹,我在这里执行:
java mainPkg.Main
它有效,事实上我得到了这个输出(在某些时候有例外,但这是另一个与我此时所问的问题无关的问题):
C:\Projects\edi-sta\build\classes>java mainPkg.Main
Hello World !!!
0
java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
at java.net.URLClassLoader$1.run(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)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at mainPkg.Main.main(Unknown Source)
但如果我进入构建/类/mainPkg/目录(包)它不起作用,我得到了一个“无法找到或加载主类”错误信息?
Infact:
Directory di C:\Projects\edi-sta\build\classes\mainPkg
12/02/2015 17:39 <DIR> .
12/02/2015 17:39 <DIR> ..
12/02/2015 17:39 1.190 Main.class
1 File 1.190 byte
2 Directory 8.091.906.048 byte disponibili
C:\Projects\edi-sta\build\classes\mainPkg>java Main
Errore: impossibile trovare o caricare la classe principale Main
你能解释一下为什么会发生这种情况吗?
Tnx