java的编译和导包问题,请指教!

weidu23 2013-06-13 02:38:44
在学习了很久的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呢?


我是菜鸟,水平有待提供,望各位高手指教!!!!!!
...全文
1046 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
weidu23 2013-06-17
  • 打赏
  • 举报
回复
引用 11 楼 huntor 的回复:
要明白包结构和文件系统的目录的对应
额,这一点,虽说我也尝试过查看javac 的命令,依然搞不定。 你说的包结构和文件系统的目录对应关系,我没明白 ...
huntor 2013-06-14
  • 打赏
  • 举报
回复
javac -d classes test\A.java javac -d classes -cp classes test\B.java
weidu23 2013-06-14
  • 打赏
  • 举报
回复
引用 5 楼 dcxy0 的回复:
可以试试 : import Test.B; 这样貌似可以在需要调用的时候自动编译,Test是包名.
这个,貌似不行吧 ...
qingse77 2013-06-14
  • 打赏
  • 举报
回复
楼主第一个问题解决没? 反复不得其解??????? 望告知,是何原因?
huntor 2013-06-14
  • 打赏
  • 举报
回复
要明白包结构和文件系统的目录的对应
weidu23 2013-06-14
  • 打赏
  • 举报
回复
引用 7 楼 huntor 的回复:
javac -d classes test\A.java
javac -d classes -cp classes test\B.java


7楼同志,请看图:
weidu23 2013-06-14
  • 打赏
  • 举报
回复
引用 7 楼 huntor 的回复:
javac -d classes test\A.java javac -d classes -cp classes test\B.java
你会回答的很好,不过,我倒是依然碰到了点麻烦。 举例: 假设D:\test,其中test包含了classes文件夹、A.java和B.java,代码如上面提问所述,A用到了B。 此时,按照你的方法: javac -d D:\test\classes tset\B.java javac -d D:\test\classes test\A.java 编译没有错,但是 ... 生成的A.class和B.class并不是包含在classes中,而是包含在classes\test中。 我试图放入classes中,写成javac -d D:\test\classes B.java,报错,报错没找到B.java是符合逻辑的。 但是,由此推出: 我文件放在fileN文件夹里,然后指定.class存放点C_path,他就一定放在C_path/fileN里面。这个有点接受不了,因为我在不知情的情况下会因此找不到.class文件!!! 请问你有什么方法解决不?
杜仲的薄荷 2013-06-14
  • 打赏
  • 举报
回复
小白,学习了。。。。
student-ai 2013-06-13
  • 打赏
  • 举报
回复
可以试试 : import Test.B; 这样貌似可以在需要调用的时候自动编译,Test是包名.
weidu23 2013-06-13
  • 打赏
  • 举报
回复
引用 1 楼 flagiris 的回复:
javac -classpath 存放jar文件夹 com.xxx.java(带package名)
哦? 那么,前面几个问题,能否指教下?
weidu23 2013-06-13
  • 打赏
  • 举报
回复
引用 1 楼 flagiris 的回复:
javac -classpath 存放jar文件夹 com.xxx.java(带package名)
你指的是 javac D://AutoPackage test.java (假设AutoPackage包含了N个jar包) ???
Ciffer 2013-06-13
  • 打赏
  • 举报
回复
貌似在CMD中编译的话是要放在默认包下面,也就是说不能有package定义
菖蒲老先生 2013-06-13
  • 打赏
  • 举报
回复
javac -classpath 存放jar文件夹 com.xxx.java(带package名)
内容概要:本文围绕分布式电源接入对配电网的影响展开研究,利用Matlab进行建模仿真与代码实现,系统分析了分布式电源(如光伏、风电等)接入后对配电网在电能质量、潮流分布、电压稳定性、保护配置等方面的影响。研究涵盖了多种分布式电源类型与不同渗透率场景,通过构建典型的配电网模型,仿真其在正常运行及故障条件下的动态响应特性,重点探讨了分布式电源引起的电压越限、反向潮流、短路电流水平变化等问题,并提出了相应的优化调控策略与解决方案。同时,结合主动配电网的有功无功协调优化、鲁棒调度等高级应用,展示了如何借助现代优化算法提升系统接纳能力与运行经济性。; 适合人群:具备电力系统基础知识,熟悉Matlab/Simulink仿真环境,从事新能源接入、配电网规划与运行等相关领域的科研人员、工程师及高校研究生。; 使用场景及目标:①掌握分布式电源接入对配电网关键指标的影响机制;②学习基于Matlab的配电网建模与仿真方法;③理解并实现主动配电网的协调优化调度算法;④为实际工程中分布式电源并网方案设计与问题诊断提供理论支持和技术参考。; 阅读建议:建议读者结合文中提供的Matlab代码,逐步复现仿真案例,深入理解模型构建与算法实现细节,并尝试在不同参数设置或网络结构下进行拓展实验,以增强对系统动态行为的认知与分析能力。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧