2 zyf4005 zyf4005 于 2016.04.30 10:57 提问

java中 包里存放的是类名.java 还是类名.class?

问题1 java中 包里存放的是类名.java 还是类名.class? 类名.java文件一定要放在所 属包目录下吗?
问题2.见下代码
package packb;
public class DemoB
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}

package packa;
class  DemoA
{
     public static void main(String[] args) 
     {
        packb.DemoB  b = new packb.DemoB();
        System.out.println("Hello World!");
      }
}

DemoB.java 和 DemoA.java都存放在D:\延飞目录下;
    现在问题为:
    1.D:\>javac -d D:\延飞\myclass DemoB.java //把DemoB.java编译后生成的packb.DemoB.class文件放在了D:\延飞\myclass下;
    2.D:\延飞>javac -d D:\延飞\myclass DemoA.java
 DemoA.java:6: 错误: 程序包packb不存在
               packb.DemoB  b = new packb.DemoB();
                     ^
 DemoA.java:6: 错误: 程序包packb不存在
            packb.DemoB  b = new packb.DemoB();
                                      ^
 2 个错误    //
    疑问:2.1:这里为啥程序包packb不存在?这里的程序包packb指的是D:\延飞\my class下的packb.DemoB.class文件还是D:\延飞下的DemoB.java?
               2.2假如程序包packb指的是D:\延飞\myclass下的packb.DemoB.class文   件,那么这已经是.class文件了,packb.DemoB  b = new packb.DemoB();还能用吗?packb.DemoB  b = new packb.DemoB();不是调用的DemoB.java文件吗?
                2.3假如程序包packb指的是D:\延飞下的DemoB.java文件,那么DemoB.java不是也在D:\延飞下的吗,怎么会程序包packb不存在?

        3.D:\延飞>set classpath= d:\延飞\myclass
               3.1这里设置的classpath=d:\延飞\myclass和系统环境变量classpath有何关系,系统classpath设置的是.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;   执行的时候是怎么顺序查找的?

        4.D:\延飞>javac -d d:\延飞\myclass DemoA.java 编译通过了

        以上疑问请各位大神帮忙分析下, 谢谢!

7个回答

CSDNXIAOD
CSDNXIAOD   2016.04.30 11:02

java中类名.class
java类名问题
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

jhfsdfs
jhfsdfs   2016.04.30 11:01

.class才是可执行的,所以包里都是.class

niaonao
niaonao   Rxr 2016.04.30 11:19

.java 文件编译后生成可执行文件 .class
你包下没有,应该是没有编译运行生成对应的 .class 文件
包下的  .java 文件即你写的代码图片说明
包图片说明
图片说明
图片说明
这个包和前两张图包不是同一个包,这是你的 .java 文件编译生成的 .class 文件存储的地方图片说明

zyf4005
zyf4005 3.D:\延飞>set classpath= d:\延飞\myclass 3.1这里设置的classpath=d:\延飞\myclass和系统环境变量classpath有何关系,系统classpath设置的是.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 执行的时候是怎么顺序查找的?
大约 2 年之前 回复
niaonao
niaonao   Rxr 2016.04.30 14:35

配环境变量,只是开发平台路径与 classpath 关系是一一对应的,对应自己的 classpath。
配好环境变量,才可使用平台的所有功能
否则有些功能不能实现,其他的路径跟他没必然联系,但需要classpath 配置正确。

%JAVA_HOME%\lib\dt.jar;
%JAVA_HOME%\lib\tools.jar;
他们之间是并列关系(没有顺序之分,需要哪个按那个配置查找)
在另一种老版本的 windows 系统下,他们不再同一行 classpath 下有多个路径设置
Windows7 下 classpath 值在同一行,不同的路径配置之间用 ; 分号隔开而已

fk002008
fk002008   2016.04.30 23:53

包都是编译之后的东西,当然是这个class文件了
.java的叫做源文件

sinat_34851444
sinat_34851444   2016.05.01 17:51

应该是类名class.

zsw_2015
zsw_2015   2016.05.02 20:25

是编译好的 **.class 文件

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于Java中类名.class的基础介绍
关于Class对象的基础介绍
类对象,类名.class与类名.this
转自:http://blog.csdn.net/cto_51/article/details/8962357 1.当在内部类中使用this指的就是内部类的对象, 为了访问外层类对象,就可以使用外层类名.this来访问。 具体示例:http://www.cnblogs.com/hnrainll/archive/2012/01/13/2321193.html 2. 在ja
类名.class 类名.this 详解
原文链接:http://www.cnblogs.com/PengLee/p/3993033.html 类名.class      我们知道在java中,一个类在被加载的时候虚拟机就会自动的生成一个这个类的一个Class类型的“类对象”,每个类都对应着一个这样的类对象,通过这个Class类型的类对象,我们就能够使用“内省与反射”机制,访问一个类的信息,比如:对应类中的方法有哪些,成员域有
java 类名.class有什么用
反射相关知识,可以看看API java.lang.reflect包中。 Class对象是用来创建类的常规对象的,当我们编译一个Java类就会同时产生一个与该类相对应的Class对象(保存在.class文件中,即.java文件编译后的.class文件中)。该Class对象中保存了创建对象所需的所有信息。
JAVA 类名.class是什么意思?
我的知道 JAVA 类名.class是什么意思? if (instance == null) { synchronized (ConfMgr.class) { if (instance == null) instance = new ConfMgr(configFile); } } 如上,ConfMgr是这代码的中公开类,在这
java 查找包里的所有类名
package org.happy.utils; import java.io.File; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.ja
jvm加载包名和类名相同的类的规则,以及如何加载包名和类名相同的类
jvm包括三种类加载器: 第一种:bootstrap classloader:加载java的核心类。 第二种:extension classloader:负责加载jre的扩展目录中的jar包。 第三种:它负责在JVM被启动时,加载来自在命令java中的-classpath或者java.class.path系统属性或者 CLASSPATH操作系统属性所指定的JAR类包和类路径。 以上参考博客
super.getClass().getName() 返回父类还是当前类
本文转载自:http://blog.sina.com.cn/s/blog_6145ed8101013me1.html(侵删) 先给出一个问题,下面程序的输出结果是多少?import java.util.Date; public class Test extends Date{ public static void main(String[] args) { new
java中自定义的类名不能与java包里面的类名一样
如果一样,则带来一些麻烦,需要将包名都加上以来区别他们。 例如在android.graphics.PathEffect这个类,如果自己定义一个相同类名com.example.drawtest.PathEffect 当使用如下代码时会 PathEffect pathEffect = new CornerPathEffect(10); 系统回提示“CornerPathEffect不能转换成Pa
Java的类名与文件名必须一致
1.Java保存的文件名必须与类名一致; 2.如果文件中只有一个类,文件名必须与类名一致; 3.一个Java文件中只能有一个public类; 4.如果文件中不止一个类,文件名必须与public类名一致; 5.如果文件中不止一个类,而且没有public类,文件名可与任一类名一致。      当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也称为转译单元)。每个编译单元都必