jdk+classpath+引入自定义包

sagegz 2009-04-22 07:15:31
第一个文件名:AccessTest.java

package test;
public class AccessTest
{
protected static int x = 8;
}

第二个文件名:Subclass.java

import test.*;
class Subclass extends AccessTest
{
public static void main(String[] args)
{
System.out.println(AccessTest.x);
}
}

这2个文件都放在G:\JAVA\VsTest\test2

我通过javac -d . AccessTest.java生成了test包(里面有AccessTest.class文件)

问题: 1.如何通过在命令行下设置classpath能够生成Subclass.class文件.(越详细越好!)
2.如何通过在系统下设置环境变量,可以直接在G:\JAVA\VsTest\test2 下输入javac Subclass.java能够生成Subclass.class文件.
3.为什么import test.AccessTest;后,直接编译Subclass.java就能够生成Subclass.class文件.?

PS:1.使用的JDK版本是1.6
2.请大家尽量不要给参考链接,因为自己找过些,看得晕...
3.生成的Subclass.class文件就在G:\JAVA\VsTest\test2目录下.
4.提前谢谢大家的帮助了!

...全文
350 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙飞tgbmlp 2009-04-25
  • 打赏
  • 举报
回复
在wendows环境下设置做成一个cmd文件

@echo off
set JAVA_HOME="C:\Program Files\Java\jdk1.6.0_05"
set access_home=E:\test
set sub_home=E:\test
set access_class=E:\test\testclasses
set sub_class=E:\test\test2classes
set path=%path%;%JAVA_HOME%\bin;
set classpath=%access_class%;%sub_class%;
%JAVA_HOME%\bin\javac -d %access_class% %access_home%\AccessTest.java
%JAVA_HOME%\bin\javac -d %sub_class% %sub_home%\Subclass.java
echo 编译成功,执行Subclass
%JAVA_HOME%\bin\java test2.Subclass
@pause
@echo on


修改上面的访问路径,就可以了
sagegz 2009-04-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zhoushaolan 的回复:]
lz是刚接触java?
用些小的编辑工具也不错,用jdk的命令,程序多了麻烦.
[/Quote]
学了一个多月了吧!虽然也有用Eclipse,但是还是想弄懂些基本原理,呵!
zhoushaolan 2009-04-25
  • 打赏
  • 举报
回复
lz是刚接触java?
用些小的编辑工具也不错,用jdk的命令,程序多了麻烦.
sagegz 2009-04-25
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 tgbmlp 的回复:]
在wendows环境下设置做成一个cmd文件

@echo off
set JAVA_HOME="C:\Program Files\Java\jdk1.6.0_05"
set access_home=E:\test
set sub_home=E:\test
set access_class=E:\test\testclasses
set sub_class=E:\test\test2classes
set path=%path%;%JAVA_HOME%\bin;
set classpath=%access_class%;%sub_class%;
%JAVA_HOME%\bin\javac -d %access_class% %access_home%\AccessTest.java
%JAVA_HOME%\bin\javac -d %sub_class% %sub_home%\Subclass.java
echo 编译成功,执行Subclass
%JAVA_HOME%\bin\java test2.Subclass
@pause
@echo on
[/Quote]
你牛!Windows都写成wendows了...
设置的这么复杂?我还头一次见...
佩服!
继续等待牛人...
如果到明天还没有结果,就只能结贴了
GeekZFZ 2009-04-24
  • 打赏
  • 举报
回复
不难吧
yangkaixin1226 2009-04-24
  • 打赏
  • 举报
回复
帮顶,顺便收藏
sagegz 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 luoxinabc12345 的回复:]
设置当前目录为环境变量,然后就可以了!
set classpath
[/Quote]
不能说清楚点吗?
我在命令行下输入:set classpath=%classpath%;.
然后编译javac subclass.java就会报错:
G:\JAVA\VsTest\test2>javac subclass.java
subclass.java:2: 无法访问 accessTest
错误的类文件: .\accessTest.java
文件不包含类 accessTest
请删除该文件或确保该文件位于正确的类路径子目录中。
class subclass extends accessTest


[Quote=引用 7 楼 oklinsong 的回复:]
引用 5 楼 sagegz 的回复:
如果不能把AccessTest.java文件放在test包中,该如何编译Subclass.java文件呢?

你的AccessTest.java中写的package test;如果不放在test包里会报错的。
[/Quote]
不可以通过在命令行下设置classpath达到编译的目的吗?一定要将AccessTest.java文件放在test包中?
oklinsong 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sagegz 的回复:]
如果不能把AccessTest.java文件放在test包中,该如何编译Subclass.java文件呢?
[/Quote]
你的AccessTest.java中写的package test;如果不放在test包里会报错的。
luoxinabc12345 2009-04-23
  • 打赏
  • 举报
回复
设置当前目录为环境变量,然后就可以了!
set classpath
sagegz 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 YidingHe 的回复:]
第二个问题看错目录了。以为你是要在 test 包下执行。
[/Quote]
如果不能把AccessTest.java文件放在test包中,该如何编译Subclass.java文件呢?
ET郭强 2009-04-23
  • 打赏
  • 举报
回复
学习了,谢谢
sagegz 2009-04-23
  • 打赏
  • 举报
回复
这问题一定要弄懂!加分!
problc 2009-04-23
  • 打赏
  • 举报
回复
-classpath <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
classpath指定的是class文件的目录,
package test;
public class AccessTest
java会在classpath目录下按包结构找test/AccessTest.class,无视.\AccessTest.class
java的包结构太严格了。。
不过如果不严格,也就不能区分test.AccessTest 和 test1.AccessTest的区别了


捏造的信仰 2009-04-22
  • 打赏
  • 举报
回复
第二个问题看错目录了。以为你是要在 test 包下执行。
捏造的信仰 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sagegz 的回复:]
不过还是不明白,虽然知道这样是可以的.原理是什么?
可是我的问题一个都没回答
[/Quote]

1.如何通过在命令行下设置classpath能够生成Subclass.class文件.(越详细越好!)
在这里不需要。楼主执行一下 javac 命令查看帮助内容即可。

2.如何通过在系统下设置环境变量,可以直接在G:\JAVA\VsTest\test2 下输入javac Subclass.java能够生成Subclass.class文件.
当前目录下没有 Subclass.java,所以你这个命令是不行的。顶多这样:
javac -cp .. -sourcepath .. -d .. ../Subclass.java


3.为什么import test.AccessTest;后,直接编译Subclass.java就能够生成Subclass.class文件.?
javac 会根据源代码内容来处理依赖性。
sagegz 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 YidingHe 的回复:]
很简单,将第一个文件放到 test 文件夹下即可。

这里是视频例子:
http://www.live-share.com/files/386746/compile_with_package.mkv.html
[/Quote]
很感谢您为此帖做的视频,呵呵!

不过还是不明白,虽然知道这样是可以的.原理是什么?
可是我的问题一个都没回答
捏造的信仰 2009-04-22
  • 打赏
  • 举报
回复
很简单,将第一个文件放到 test 文件夹下即可。

这里是视频例子:
http://www.live-share.com/files/386746/compile_with_package.mkv.html

62,614

社区成员

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

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