当前位置:编程学习 > JAVA >>

第一天上课 老师出的看似弱智 其实超级难的题目 求高手帮忙看看 目前没有人弄出来

看似非常简单的题目 老师说只有高手才弄的明白

两个非常简单的类 一个是类B public class B extends A{}

一个是类A package a;
public class A{}


文件路径 D:\java_test\a 两个源文件 都放在路径下
编译 类A 没有问题 D:\java_test\a>javac A.java

编译 类B 就是死活死去通过不了 无论怎么编译 就是提示 找不到类A
目前 我的想法是 因为类A在包 a 中 所以在编译的时候 不能再a路径下 否则找不到类A的全名
只能在上层文件结构中 就是java_test 中
所以 我这样写


我就纳闷了 我在java_test 路径下 还找不到类A 的全名这是搞哪样呢
求各位大神帮帮 目前大家都难住了 这是什么把戏呢 --------------------编程问答-------------------- B中import a.A;一下 --------------------编程问答-------------------- 估计你们老师出题,B.java应该不在a包下吧?
假设在b包下吧:
D:\java_test\a\A.java
package a;
public class A{}

D:\java_test\b\B.java
package b;
import a.A;

public class B extends A{}


cmd,在D:\java_test\下,执行javac b\B.java
A.java和B.java同时都编译完成。 --------------------编程问答--------------------
引用 2 楼 oh_Maxy 的回复:
估计你们老师出题,B.java应该不在a包下吧?
假设在b包下吧:
D:\java_test\a\A.java
package a;
public class A{}

D:\java_test\b\B.java
package b;
import a.A;

public class B extends A{}


cmd,在D:\java_test\下,执行javac b\B.java
A.java和B.java同时都编译完成。


亲 你这个很好 但是不可以改题 就是不在a 包下面 但是在a 文件夹里面放着 --------------------编程问答--------------------
引用 2 楼 oh_Maxy 的回复:
估计你们老师出题,B.java应该不在a包下吧?
假设在b包下吧:
D:\java_test\a\A.java
package a;
public class A{}

D:\java_test\b\B.java
package b;
import a.A;

public class B extends A{}


cmd,在D:\java_test\下,执行javac b\B.java
A.java和B.java同时都编译完成。

不在任何包下面 --------------------编程问答--------------------
引用 2 楼 oh_Maxy 的回复:
估计你们老师出题,B.java应该不在a包下吧?
假设在b包下吧:
D:\java_test\a\A.java
package a;
public class A{}

D:\java_test\b\B.java
package b;
import a.A;

public class B extends A{}


cmd,在D:\java_test\下,执行javac b\B.java
A.java和B.java同时都编译完成。
啊啊啊 真的是这里啊 阴险 没有IMPORT --------------------编程问答-------------------- 导入下A试过了么? --------------------编程问答-------------------- 看一下源码文件,A和B是否在同一个包下。 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
引用 5 楼 huozhou 的回复:
Quote: 引用 2 楼 oh_Maxy 的回复:

估计你们老师出题,B.java应该不在a包下吧?
假设在b包下吧:
D:\java_test\a\A.java
package a;
public class A{}

D:\java_test\b\B.java
package b;
import a.A;

public class B extends A{}


cmd,在D:\java_test\下,执行javac b\B.java
A.java和B.java同时都编译完成。
啊啊啊 真的是这里啊 阴险 没有IMPORT

如果A.java和B.java同在a目录下,可以不带import的;如果B.java不在a目录下,则必须要加import。

兄弟,这个真心不是难题目,只是一些注意事项。感觉吧,面向对象的特性之类的概念比这个重要多了,如果老师第一天java就教这个东西,建议换个老师吧~ --------------------编程问答--------------------
--------------------编程问答-------------------- 没有在同一个包里面就要通过 import 编译的时候才知道路径。这些只是技巧性问题,碰见一次以后就会知道了。 --------------------编程问答-------------------- --------------------编程问答-------------------- 如果 A.java, B.java 放在同一个目录下,则在编译类A时
 javac -d . A.java

再 javac B.java --------------------编程问答-------------------- --------------------编程问答-------------------- 这属于javac的参数问题 --------------------编程问答-------------------- //-d是指定编译好的class文件目录,-source指定兼容版本,-cp指定引用类文件,-target是编译后的class文件的版本,-encoding是使用的编码,-sourcepath是java源文件引用其他目录下面的java源文件
具体请参考:http://blog.csdn.net/chenshuang_com/article/details/7681664 --------------------编程问答-------------------- 看似难,实际超级弱智的题目。 --------------------编程问答-------------------- 半天给你的题目搞晕了... --------------------编程问答--------------------
引用 9 楼 oh_Maxy 的回复:
Quote: 引用 5 楼 huozhou 的回复:

Quote: 引用 2 楼 oh_Maxy 的回复:

估计你们老师出题,B.java应该不在a包下吧?
假设在b包下吧:
D:\java_test\a\A.java
package a;
public class A{}

D:\java_test\b\B.java
package b;
import a.A;

public class B extends A{}


cmd,在D:\java_test\下,执行javac b\B.java
A.java和B.java同时都编译完成。
啊啊啊 真的是这里啊 阴险 没有IMPORT

如果A.java和B.java同在a目录下,可以不带import的;如果B.java不在a目录下,则必须要加import。

兄弟,这个真心不是难题目,只是一些注意事项。感觉吧,面向对象的特性之类的概念比这个重要多了,如果老师第一天java就教这个东西,建议换个老师吧~


我也觉得换个老师吧。 --------------------编程问答-------------------- 换个老师吧。 --------------------编程问答-------------------- B中没有import A吧,用eclipse很直观就看到代码有没有语法错误了,建议用ide工具 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
引用 17 楼 forgetsam 的回复:
看似难,实际超级弱智的题目。


大学老师很大一部分都没有过实际经验,看着很NB的样子,其实就是SB一个,出的题目毫无意义。 --------------------编程问答--------------------
引用 24 楼 rumlee 的回复:
Quote: 引用 17 楼 forgetsam 的回复:

看似难,实际超级弱智的题目。


大学老师很大一部分都没有过实际经验,看着很NB的样子,其实就是SB一个,出的题目毫无意义。

我不觉得,他们也有项目要做的。
在很多时候这就是细节。。。 --------------------编程问答-------------------- javac 的参数有问题。
使用javac进行源程序编译时,要设置编译器的根路径。
之后在跟路径的基础上进行源程序的编译操作,这样,
所有编译过的类,它的package内容与实际的位置就对应起来了。

楼主调用javac进行编译的时候,A.java文件,编译器的编译路径,默认是当前路径,而当前路径在a这个文件夹下面,这个路径是错误的。
应该是javac . a\A.java
对应的javac . a\B.java
这样,A和B两个class文件的位置,与package的内容,就一一对应起来了。 --------------------编程问答-------------------- 看看javac的指令,建议将A.java,B.java同时编译或者将A.class加入到-classpath中。
http://www.cnblogs.com/JeffChen/archive/2008/01/15/1039708.html
javac
-classpath,设定要搜索类的路径,可以是目录,jar文件,zip文件(里面都是class文件),会覆盖掉所有在CLASSPATH里面的设定。
-sourcepath, 设定要搜索编译所需java 文件的路径,可以是目录,jar文件,zip文件(里面都是java文件)。
所以一个完整的javac命令行应该是这样的,
假设abc.java在路径c:\src里面,在任何的目录的都可以执行以下命令来编译。
javac -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip -sourcepath c:\source\project1\src;c:\source\project2 \lib\src.jar;c:\source\project3\lib\src.zip c:\src\abc.java --------------------编程问答-------------------- 两个类的不在同一目录下。A类编译生成的Class文件在a文件夹中,B类无法找到。在B类中加Package a;即可 --------------------编程问答--------------------  一个牛逼的面试题~曾经吐血!
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,