我正在练习套餐。我在目录名称中有三个文件。这些文件说明了。
/*filename Eat.java*/
package animal;
public interface Eat{
public void food();
}
第二档:
/*Animal.java*/
package animal;
public interface Animal{
public void move();
}
实现上述接口的第3个文件
/*Dog.java*/
package animal;
public class Dog implements Animal,Eat
{
int movesteps=2;
String food="MEAT";
Dog()
{
move();
food();
}
public void move()
{
System.out.println("I am a dog i can move just "+this.movesteps+" steps/sec");
}
public void food()
{
System.out.println("I am a dog i only eat "+this.food);
}
public static void main(String args[])
{
Dog myDoggy=new Dog();
System.exit(0);
}
问题在于,当我在所有类中编译没有包的Dog.class时它运行正常,但是当我将它们包含在包中时,编译器会在notepad ++中出现很多错误。
答案 0 :(得分:0)
所有java文件都应位于“animal”目录中:
- animal
|- Eat.java
|- Animal.java
|- Dog.java
如果您拥有像“com.some.package”这样的包中的所有类,则路径应为
- com
|- some
|-package
|- Eat.java
|- Animal.java
|- Dog.java
答案 1 :(得分:0)
转到目录D:\javapractice\interface
并打开cmd.Keep目录D:\javapractice\interface\animals
下的所有三个java文件。
D:\javapractice\interface
- animal
|- Eat.java
|- Animal.java
|- Dog.java
现在开始编译java类
Cmd:D:\javapractice\interface>
javac animal\Eat.java
javac animal\Animal.java
javac animal\Dog.java
您将在D:\ javapractice \ interface \ animal
位置找到三个.class现在是时候运行它了:
java animal.Dog
答案 2 :(得分:0)
经过长时间的搜索和测试其他IDE的特定代码后,我得到了答案。问题在于Notepadd ++。感谢所有人,它在所有其他IDE上运行良好。
答案 3 :(得分:0)
您希望创建单独的源和输出目录,以便将类编译到其中。除非指定输出目录,否则您的类将被编译到源目录中。当你需要删除旧的类文件时,这是一个真正的痛苦方法(最终你需要)。
假设您有此目录结构:
.
├── classes
└── src
└── animal
├── Animal.java
├── Dog.java
└── Eat.java
像这样编译:
javac -d classes -sourcepath src src/animal/Dog.java
你最终会得到:
.
├── classes
│ └── animal
│ ├── Animal.class
│ ├── Dog.class
│ └── Eat.class
└── src
└── animal
├── Animal.java
├── Dog.java
└── Eat.java
一个提示:如果编译最依赖的类(即Dog.java),javac将编译其依赖项(Animal,Eat)。这样你就不必执行3次javac了。