javac 理解

 用贯了IDE,连java中最基本的命令都稀里糊涂,现在,一切从头开始,日积月累地进行学习。今天研究一下javac编译命令。

一、包名惹得祸。

无意中写了个简单的java文件:Main.java

  1. package xplq;
  2. public class Main
  3. {
  4.     public static void main(String[] args){
  5.         System.out.println("xplq");
  6.     }
  7. }

按照习惯,开始编译:

  1. javac Main.java

ok,编译出Main.class文件了。接着想看看结果,又来了一个命令java:

  1. java Main

本以为没有任何悬念,可是console打印出:

  1. D:/>javac Main.java
  2. D:/>java Main
  3. Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: xpl
  4. q/Main)
  5.         at java.lang.ClassLoader.defineClass1(Native Method)
  6.         at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
  7.         at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
  8. 4)
  9.         at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
  10.         at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
  11.         at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
  12.         at java.security.AccessController.doPrivileged(Native Method)
  13.         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  14.         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
  15.         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
  16.         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
  17.         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
  18. D:/>

没有包名,自己建立一个文件夹叫xplq,把Main.class,拖入xplq文件夹中。测试:

  1. java xplq.Main

居然ok了,呵呵。

二、探寻问题根源——javac的理解。

有没有什么办法不是手动的建立文件夹呢?如果包名为N层,那还不累死?于是左思右想,发现问题的根源在于对javac的应用和理解上。

运用命令:dest和src为文件夹

  1. javac  dest/Main.java -d src

打开src,可以看到包名已经自动建立,按以下输入:

  1. D:/>cd src
  2. D:/src>java xplq.Main
  3. xplq
  4. D:/src>

呵呵,看样子还是基础薄弱啊!继续学习。。。。

突然发现,有篇好的文章:http://softbbs.pconline.com.cn/6159733.html,有空研究

百思不得其解,后来才发现是因为包名不存在。(类中含有包名)

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页