Test.java和B.java属于默认包。
File Test.java(因为我们可以为没有公共类的文件指定任何名称)包含:
class A{}
文件B.java包含:
class B extends A{}
如果我编译B.java,则会出错:
B.java:1: error: cannot find symbol
class B extends A{
^
symbol: class A
1 error
代码有什么问题?请帮帮我!
答案 0 :(得分:2)
编译器将在与提及它的文件相同的文件中查找类A
(在本例中为B.java
)。之后,它将在类路径和import
列表中查找它。之后,它将在同一个包中的文件A.java
中查找它,此文件不存在。它找不到它...... cannot find symbol
。
执行@Vikdor推荐的内容:首先编译Test.java
。
答案 1 :(得分:2)
您应该为要创建的Test.java
编译A.class
。然后你应该尝试编译B.java
,编译器会在当前目录中找到A.class
,这是默认的CLASSPATH
。
C:\Temp\test>dir
Volume in drive C is OSDisk
Volume Serial Number is 1E37-6273
Directory of C:\Temp\test
09/23/2012 10:48 PM <DIR> .
09/23/2012 10:48 PM <DIR> ..
09/23/2012 10:47 PM 100 B.java
09/23/2012 10:47 PM 68 Test.java
2 File(s) 168 bytes
2 Dir(s) 171,760,668,672 bytes free
C:\Temp\test>type Test.java
class A
{
static {
System.out.println("A");
}
}
C:\Temp\test>Type B.java
class B extends A
{
public static void main(String [] args)
{
new B();
}
}
C:\Temp\test>javac Test.java
C:\Temp\test>dir
Volume in drive C is OSDisk
Volume Serial Number is 1E37-6273
Directory of C:\Temp\test
09/23/2012 10:49 PM <DIR> .
09/23/2012 10:49 PM <DIR> ..
09/23/2012 10:49 PM 375 A.class
09/23/2012 10:47 PM 100 B.java
09/23/2012 10:47 PM 68 Test.java
3 File(s) 543 bytes
2 Dir(s) 171,760,668,672 bytes free
C:\Temp\test>javac B.java
C:\Temp\test>java B
A
C:\Temp\test>
答案 2 :(得分:0)
如果先编译Test.java,则会有一个A.class文件。如果不这样做,编译器就不知道如何找到A类(因为它只知道查找A.class或A.java)。
答案 3 :(得分:0)
It's Working na..............
//Test.java
class A
{
public static void main(String arg[])
{
System.out.println("A");
}
}
//B.java
public class B extends A
{
public static void main(String arg[])
{
System.out.println("B");
}
}
答案 4 :(得分:0)
创建A类
class A{}
创建B类
class B extends A{}
现在请注意以下几点:
1。 class A
和class B
应位于相同的包中,因为class A
有default access modifier
,因此仅授予包级访问权限。
<强> 2。编译 class A
首先,然后编译class B
。