2012-01-10 77 views
0

我希望这个问题不要重复。但只是无法在任何地方找到答案:Java:类已解决?

我有一个文件夹包含两个文件一个A.java另一个B.class。

现在A.java我想申报

public class A extends Applet{ 
... 
    B aB; 
} 

编译器给我:

B cannot be resolved to a type 

我看了很多帖子说说,如果文件是在同一文件夹中,我不需要导入。任何人都可以帮助我“解决”这个问题吗? 非常感谢!

-----------已解决! - 查看下面的答案------------------

+0

a.java你有一流的“A”,我想在文件b.class中(在b.java中)类名将是'B',你确定它是小'b'吗?请检查!!如果问题未解决,请尝试发布B级代码。 – aProgrammer 2012-01-10 07:36:31

+0

已更改...是的,它们是一致的。我使用A和B作为两个示例 - 原始代码有点复杂......但也许我必须很快发布它们。 – user1140120 2012-01-10 07:41:37

+0

你能否在类声明中显示名称和包装的完整文件夹结构? – 2012-01-10 07:54:57

回答

0

你发布的简单案例适合我。我会检查下列事项:

  • 你肯定B.class存在于同一文件夹中A.java
  • 您是否在该文件夹中运行javac
  • 您是否在程序中的任何地方正确键入了类名B?这包括大写,因为Java标识符区分大小写。
  • 您的程序中是否有任何package声明?如果有的话,这些都不会起作用,因为你只需将所有内容放入一个文件夹就可以隐式使用默认包。
-1

编译器在其类路径中查找* .class文件。它只会在相同的源目录中查找* .java文件。您需要设置类路径以包含目录。

或者您可以使用IDE来为您设置所有这些,并在此过程中节省大量时间。

+0

如果你只是使用默认包,编译器会在当前目录中找到'.class'文件。 – Taymon 2012-01-10 08:03:26

1

.class文件需要驻留在classpath变量所引用的目录中。通常你将你的.java文件放在一个目录(src)中,编译到另一个目录(bin),并在第三个目录(lib)中包含外部.class文件。该命令将是这样的:

# compile 
javac -sourcepath src -classpath lib -d bin 
# run 
java -classpath bin:lib A 

使用像eclipse一个IDE应该有很大的帮助这里,因为它在文件需要的大部分细节护理

+0

谢谢!它的工作原理,我用“javac -classpath dirForAandB A.java”非常感谢! – user1140120 2012-01-10 08:40:22