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

java的编译和导包问题,请指教!
在学习了很久的java之后,我突然意识到,我对java的生成过程不熟,于是,开始手动cmd编译。
但是,在手动编译的过程中,发现了几个问题,希望得到大家的指点:

问题1:---编译class文件
首先设定一个问题场景(也就是一个问题的来由):
请看程序:

package test;
public class A{ 
  private void fun(){/*do something*/}
  public void doSome(B b){/*do something*/}
  public static void main(String[]args){/*do something*/}
}
---
package test;
public class B{
    /*do something*/
}

此时,如果一个人是直接写了一段D:javac A.java B.java 的话,是没有问题的,可以很方便的生成出A.class和B.class文件。

但是,如果来一个先后顺序,先javac B.java生成B.class,再想直接javac A.java生成A.class,就会出问题了,如图:

然而实际上,我们经常写代码,会碰到你先在某处用了B.java(此时肯定编译好了B.class),可后面因为某种需求有不得不在另一个地方使用B.class,比如在另一处的A.java中使用了B类,那么,我先编译好了B.class,该怎么编译A.java呢?

-----------分割线1---------------

问题2:---不同包中的编译问题


package test;
public class A{ 
  private void fun(){/*do something*/}
  public void doSome(B b){/*do something*/}
  public static void main(String[]args){/*do something*/}
}
---
package Auxiliary;
public class B{
    /*do something*/
}


A.java和B.java在不同的包里面,怎么用cmd编译?

--------------------------分割线2--------------------------
问题3:
 和问题2类似,不同之处在于,如果不是public,是别的类型,怎么编译?【此处提醒就好,我自己来试试】

--------------------------分割线3--------------------------

问题4:---导包问题
   这个问题应该是我最关心的问题了,我曾经在http://bbs.csdn.net/topics/390465466提过相关问题,没有得到很好地解答,这里再次求教:
  如果有一个a.jar包,我们导包只需javac -cp D://a.jar A.java来导包,
  但是,如果有很多个jar包,我们不可能一个个的导包,这样不现实!,此时,肯定放在同一个文件夹里面,就比如放在AutoPackage文件夹中,那么:怎么一次性导入这个AutoPackage呢?


我是菜鸟,水平有待提供,望各位高手指教!!!!!!

------解决方案--------------------
javac -classpath 存放jar文件夹 com.xxx.java(带package名)
------解决方案--------------------
貌似在CMD中编译的话是要放在默认包下面,也就是说不能有package定义
------解决方案--------------------
可以试试
:


import Test.B;

这样貌似可以在需要调用的时候自动编译,Test是包名.
------解决方案--------------------
javac -d classes test\A.java
javac -d classes -cp classes test\B.java
------解决方案--------------------
小白,学习了。。。。