Can';不要在另一个文件中使用Java类
找不到解决这个问题的办法 Guitar2.java:Can';不要在另一个文件中使用Java类,java,Java,找不到解决这个问题的办法 Guitar2.java: public class Guitar2 { private String serialNumber; public Guitar2(String serialNumber) { this.serialNumber = serialNumber; } public String getSerialNumber() { return serialNumber;
public class Guitar2
{
private String serialNumber;
public Guitar2(String serialNumber)
{
this.serialNumber = serialNumber;
}
public String getSerialNumber()
{
return serialNumber;
}
}
Inv2.java:
import java.util.List;
import java.util.LinkedList;
public class Inv2
{
private List guitars;
public Inv2()
{
guitars = new LinkedList();
}
public void addGuitar(String serialNumber)
{
Guitar2 guitar = new Guitar2(serialNumber);
guitars.add(guitar);
}
}
两个文件都在同一个目录中,都是755
,并且目录在类路径中。我收到错误消息:
[machine]me @ directory $ javac Inventory.java
Inventory.java:18: cannot find symbol
symbol : class Guitar
location: class Inventory
Guitar guitar = new Guitar();
^
Inventory.java:18: cannot find symbol
symbol : class Guitar
location: class Inventory
Guitar guitar = new Guitar();
^
2 errors
我读到,如果一个文件在同一个目录中,那么它的类可以在同一目录中的其他文件中使用,而无需任何导入语句。这里有什么问题
使用上述代码后编辑输出:
我得到两个
.java
文件的.class
文件。运行javac-guitart.java
只有在编译完并创建了一个Guitar.class之后,才能运行
javac Inventory.java
runjavac guitart.java
只有在编译完并创建了一个Guitar.class之后,才能运行
javac Inventory.java
首先尝试编译Guitar.java。然后运行你的命令。或者试试这个:javac*.java
首先尝试编译guitart.java。然后运行你的命令。或者试试这个:javac*.java
确保两个类都有相同的包。即使它们位于同一目录中,不同的包也可能导致此问题。键入相同的包或使用导入,然后尝试使用javac*.java
编译,确保两个类具有相同的包。即使它们位于同一目录中,不同的包也可能导致此问题。键入相同的包或使用导入,然后尝试使用javac*.java
进行编译。首先尝试执行javac guist.java
,然后执行javac Inventory.java
——这能解决问题吗?(我不确定这是否必要,但值得一试。)Eclipse、Netbeans、Intellij。。。选择您的IDE。使用文本编辑器进行其他操作;-)看来你已经解决了第一个问题。“未选中”问题是因为您使用的是没有类型参数的List
和LinkedList
。这些都应该避免——Java只允许向后兼容。使用List
和LinkedList
。首先尝试执行javac-guitart.java
,然后再执行javac-Inventory.java
——这能解决问题吗?(我不确定这是否必要,但值得一试。)Eclipse、Netbeans、Intellij。。。选择您的IDE。使用文本编辑器进行其他操作;-)看来你已经解决了第一个问题。“未选中”问题是因为您使用的是没有类型参数的List
和LinkedList
。这些都应该避免——Java只允许向后兼容。使用List
和LinkedList
。查看我对@Mifmif的评论。@TMOTTM dols-l
并将输出添加到问题中查看我对@Mifmif的评论。@TMOTTM dols-l
并将输出添加到问题中执行javac*.java
时,我得到注意:Inventory.java使用未经检查或不安全的操作。使用-Xlint重新编译:未选中以获取详细信息。
请参阅@TMOTTM这是一个警告-但这并不意味着您的代码没有编译。.class
文件是否已创建?@Mifmif除非他使用的源与他发布的琐碎的源非常不同,否则此链接不相关。@TMOTTM是您问题中真正的小源,是您正在编译的实际源,还是您在其中有更多的内容(可以理解)在执行javac*.java
时,我发现注意:Inventory.java使用未经检查或不安全的操作。使用-Xlint重新编译:未选中以获取详细信息。
请参阅@TMOTTM这是一个警告-但这并不意味着您的代码没有编译。.class
文件是创建的吗?@Mifmif除非他使用的源与他发布的琐碎的源非常不同,否则此链接不相关。@TMOTTM是您问题中真正的小源,还是您正在编译的实际源,还是您(可以理解)在原始帖子中遗漏了更多的内容?
[me]machine @ ricks $ javac Inv2.java
Note: Inv2.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.