嘿,我有一个问题,我有这个已编译的 .class 文件,它包含在 .java 文件中:
package my.mypackage;
public class MyClass {
//SPACE START
public static void space(int spacecount) {
int spacepos = 1;
while (spacepos <= spacecount) {
System.out.println("");
spacepos++;
}
}
//SPACE END
//HASH START
public static int encrypt(String pass) {
int total = 0;
int countone = 0;
int counttwo = 0;
String charlist = "abcdefghiklmnopqrstuvwxyz";
for (int l = 0; l < pass.length(); l++) {
countone = pass.charAt(l);
counttwo = (charlist.indexOf(countone));
counttwo++;
total *= 17;
total += counttwo;
}
return total;
}
//HASH END
}
我想将它导入到另一个名为 a.java 的文件中,它包含以下内容:
import my.mypackage.MyClass;
import java.util.Scanner;
public class a {
public static void main(String[] args) {
MyClass.space(4);
Scanner in = new Scanner();
System.out.println("Input pass: ");
String a = in.nextLine();
int b = MyClass.encrypt(a);
MyClass.space(4);
System.out.println(b);
}
}
两者都在一个文件夹中。 但是当我试图编译它时,它向我展示了这个:
a.java:1: error: package my.mypackage does not exist
import my.mypackage.MyClass;
^
a.java:5: error: cannot access MyClass
MyClass.space(4);
^
bad class file: ./MyClass.class
class file contains wrong class: my.mypackage.MyClass
Please remove or make sure it appears in the correct subdirectory of the classpath.
2 errors
谁能告诉我如何逐步将它组合在一起?
最佳答案
这是罪魁祸首:
both are in one folder.
Java 编译器依赖于一种命名源文件和文件夹的约定,它可以通过仅检查文件名来找到源代码,即不检查其内容;包名称是命名约定的一部分。这就是编译器希望在不同的文件夹中找到 MyClass.java
的原因。
由于 class MyClass
在 my.mypackage
包中,而 class a
在默认包中,它们的 .java
文件不能放在同一个文件夹中。相反,MyClass.java
文件需要放在 my/mypackage/
(在 Windows 上,my\mypackage\
)文件夹中a.java
文件的位置。
关于java - 在 .java 中导入自己的类文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22840259/