作者barry800414 (小铭)
看板b98902HW
标题[JAVA] package + HW3
时间Mon Apr 5 00:13:24 2010
请先看懂上面那一篇:[JAVA] classpath 请先搞懂再去写hw3
package就是拿来分门别类用的! 两个非常重要的概念是
1.程式逻辑上的分类管理
2.实体档案上的分类管理
这样讲没人会懂 直接举hw3为例子
看老师给的档案是 POOArticle.class
还故意写这样喔! ntu/csie/oop10spring/POOArticle.class
看doc 会写 ntu.csie.oop10spring.POOArticle
这是什麽? 就是它是 ntu.csie.oop10spring这个package下的POOArticle.class
然後呢?
我们先抓下来 放在 c:\workspace\hw3\class 试试看!
c:\workspace\hw3\class> java POOArticle
会出现这样的错误讯息:
Exception in thread "main" java.lang.NoClassDefFoundError: POOArticle (wrong
name: ntu/csie/oop10spring/POOArticle)
那该怎麽办? 方法如下 有点麻烦 但是只有这样才能成功执行
c:\workspace\hw3\class 下新增一个 名
ntu 的资料夹 在ntu这个资料夹里面
再新增一个名
csie 的资料夹 在csie 这个资料夹再新增名
oop10spring 的资料夹
然後把POOArticle.class 放到
c:\workspace\hw3\class\ntu\csie\oop10spring 里
接着先跳回 c:\workspace\hw3\class
执行的指令:
C:\workspace\hw3\class>java ntu.csie.oop10spring.POOArticle
黄色部分: 也就是类别名称
不再是 POOArticle 变成
ntu.csie.oop10spring.POOArticle 了!
这就是:
程式逻辑上的分类管理
而建置这麽多相对应的资料夹的目的 就是要符合:
实体档案上的分类管理
如此才能正常的运作!!!
c:\workspace\hw3\class> java ntu.csie.oop10spring.POOArticle
↑ ↑ ↑
c:\workspace\hw3\class\ntu\csie\oop10spring\
=============================================================================
最後就是hw3整个的编译方法和执行方法了 我是这样做的:
c:\workspace\hw3\src\ntu\csie\oop10spring\
放 POOAdvArticle.java 和 POOAdvArticleDemo.java
两个档案里面最前面都要加
package ntu.csie.oop10spring
c:\workspace\hw3\class\ntu\csie\oop10spring\
放 POOArticle.class
编译POOAdvArticle.java 和 POOAdvArticleDemo.java的指令是这样:
C:\workspace\hw3>javac -cp .\class .\src\ntu\csie\oop10spring\*.java
注意是.java档 不是.class档 所以 要打POOAdvArticle.java和Demo的路径
而不是类别名称
也就是"不要"打这样:
C:\workspace\hw3>javac -cp .\class .\src\ntu
.csie
.oop10spring
.*.java
如此就可以编译了,不过这样会有一个缺点,就是 产生的.class档 会在同一个目录下
所以再加一个指令来改变产生档案的储存位置
=============================================================================
C:\workspace\hw3>javac -cp .\class -d .\bin .\src\ntu\csie\oop10spring\*.java
=============================================================================
红蓝部分告诉compiler POOArticle.class放哪里
紫色部分告诉compiler 产生的.class档要放哪
黄色部分告诉compiler 想要compile 的档放哪里
执行Demo的话:
==============================================================================
C:\workspace\hw3>java -cp .\class;.\bin ntu.csie.oop10spring.POOAdvArticleDemo
==============================================================================
(如果有要放参数的话记得加在後面)
蓝色部分是CLASSPATH 记住因为要告诉JVM
POOArticle.class 和 POOAdvArticle.class 的位置 所以要
.\class;.\bin
两个都要放 少任何一个都会错
大概是这样了
大家加油吧
hw3 其实是前面这些东西难搞 本身不难写
小小提示: 可能会用到main的参数 以及 Linked list
然後 抛弃eclipse吧
我已经对它失望了XD 试过无数种方法 不是package产生出来的时候怪怪的
就是编译没过 不然就是编译过了跑了会爆掉 我已经不想再用了
多多用cmd 和 vim吧
现在只用eclipse在 edit而已 (缩排、加注解还是很好用)
HW3各位加油 有一个月的时间 不要到deadline前才写
更详细的看这:
http://caterpillar.onlyfun.net/Gossip/JavaEssence/Package.html
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.244.4.129
※ 编辑: barry800414 来自: 60.244.4.129 (04/05 00:37)
1F:推 Dorapika:唔,eclipse还是建的出来啦。 04/05 00:45
3F:推 s864372002:一开始也是弄到快崩溃,照我第一篇弄应可以跟楼上一样 04/05 11:31
4F:→ tomap41017:我是直接开Vector..有差别吗?还没仔细研究 04/06 00:34
5F:→ sunjw:推 太感动了 XD 04/07 20:11
6F:推 zebraseven:啊不推就太对不起小铭了 !! 04/16 13:39
7F:推 tonylo2ooo:推到悬崖去!!!! 04/26 21:42