尝试从"mypackage"外部的 java 文件访问包"mypackage"内的类文件



MyClass.class

package mypackage;
public class MyClass{
public String getName(String name){
return name;
}
}

这是位于D://javanew/mypackage 中的MyClass.class

Xyz.java

import javanew.mypackage.MyClass;
public class Xyz{
public static void main(String[] args){

System.out.println("Hello");
String n="Arindam";

MyClass mc=new MyClass();

String name=mc.getName(n);
System.out.println(name);
}
}

这是位于d:\javanew内部的Xyz.java。我想在Xyz.java中导入MyClass,但当我打开cmd并输入d:时,将命令写为"javac Xyz.java";我得到以下错误:

Xyz.java:1: error: cannot access MyClass
import javanew.mypackage.MyClass;
^
bad source file: .javanewmypackageMyClass.java
file does not contain class javanew.mypackage.MyClass
Please remove or make sure it appears in the correct subdirectory of the sourcepath.
Xyz.java:10: error: cannot find symbol
MyClass mc=new MyClass();
^
symbol:   class MyClass
location: class Xyz
Xyz.java:10: error: cannot find symbol
MyClass mc=new MyClass();
^
symbol:   class MyClass
location: class Xyz

我知道一个解决方案,如果我使";package javanew.mypackage";在MYClass.java中,然后我可以访问Xyz.java中的文件;MyClass";Xyz.java中的文件,而不更改MyClass.java的包名。

由于类Xyz和目录mypackagejavanew在同一目录中,因此不应在Xyz类中执行import javanew.mypackage.MyClass。相反,只在Xyz类中执行import mypackage.MyClass

因此,Xyz类应该是这样的:

import mypackage.MyClass;
public class Xyz{
public static void main(String[] args){

System.out.println("Hello");
String n="Arindam";

MyClass mc=new MyClass();

String name=mc.getName(n);
System.out.println(name);
}
}

最新更新