Java 如果包名称不同,则无法从导入的JAR调用方法
在类C1中,我在包P1下有一个方法M1,它在名为JP1的Java项目下。我能够成功导出jar文件,没有任何问题 在另一个项目中将jar文件添加到类路径后,我尝试在名为JP2的Java项目下调用包P2下的方法M1,但由于某些原因,我无法找到方法“M1”,因为包名P1和P2不同,如果我将P2包名保持为P1,那么我就能够调用M1方法Java 如果包名称不同,则无法从导入的JAR调用方法,java,jar,Java,Jar,在类C1中,我在包P1下有一个方法M1,它在名为JP1的Java项目下。我能够成功导出jar文件,没有任何问题 在另一个项目中将jar文件添加到类路径后,我尝试在名为JP2的Java项目下调用包P2下的方法M1,但由于某些原因,我无法找到方法“M1”,因为包名P1和P2不同,如果我将P2包名保持为P1,那么我就能够调用M1方法 如果包名称不同,如何调用该方法 注意:我在Eclipse中导出了jar文件,没有任何问题。这意味着该方法或该方法所在的类(或者如果该类在另一个类中,则该类,一直到到达顶级
注意:我在Eclipse中导出了jar文件,没有任何问题。这意味着该方法或该方法所在的类(或者如果该类在另一个类中,则该类,一直到到达顶级类为止;该类是其自身源文件中最上层的外部对象)没有标记为
public
。标记它们本身;您已经明确告诉java您不希望构造在包之外可见
那么,你有这个:
class-MyClass{
公共void foo(){}
}
或者这个:
公共类MyClass{
void foo(){}
}
(或组合;类和方法都不是公共的)。你需要这个:
公共类MyClass{
公共void foo(){}
}
类C1是公共的吗?您是否尝试过用完整的限定名创建类C1的对象,如P1.C1=new P1.C1();然后P2类中的P1.C1.M1?@TrishulSinghChoudhary,是的,类C1仅为公共类。@Haswan如果类和函数都是公共类,则可以从任何包中调用它们。你能把你的类和方法声明放进去吗?