Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果包名称不同,则无法从导入的JAR调用方法_Java_Jar - Fatal编程技术网

Java 如果包名称不同,则无法从导入的JAR调用方法

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文件,没有任何问题。这意味着该方法或该方法所在的类(或者如果该类在另一个类中,则该类,一直到到达顶级

在类C1中,我在包P1下有一个方法M1,它在名为JP1的Java项目下。我能够成功导出jar文件,没有任何问题

在另一个项目中将jar文件添加到类路径后,我尝试在名为JP2的Java项目下调用包P2下的方法M1,但由于某些原因,我无法找到方法“M1”,因为包名P1和P2不同,如果我将P2包名保持为P1,那么我就能够调用M1方法

  • 如果包名称不同,如何调用该方法

  • 注意:我在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如果类和函数都是公共类,则可以从任何包中调用它们。你能把你的类和方法声明放进去吗?