在另一个包的主包中使用一个包中的java类(同一项目)

时间:2019-01-25 10:32:36

标签: java eclipse package

我正在用Java处理的项目中有两个软件包,在另一个软件包中运行类的主体时,我需要从一个软件包中调用一个类。

我有一些类似于以下内容的东西:

Project JavaCode
    /src
        /fr.insalyon.tc.framework
            Main.java
            Gameplay.java
        /Game
            Wythoff.java

问题是在Wythoff.java文件中,我调用import fr.insalyon.tc.framework.Gameplay;,但是在运行Main.java时却遇到错误,提示它找不到类Wthoff。

Main.java和Gameplay.java的第一行都带有package fr.insalyon.tc.framework;,Gameplay是一个接口,Wythoff实现Gameplay来玩游戏。主要功能如下:

BufferedReader in = new BufferedReader( new InputStreamReader( System.in ) );
nomClasse = in.readLine();
Class<?> votreClasse = Class.forName(nomClasse);  
JeuCombinatoire jeu = (JeuCombinatoire) votreClasse.newInstance();

当我运行Main并提示我键入类名称时,键入Wythoff会给我ClassNotFoundException

我不知道如何修改项目或程序包以使其一起工作,同时保持当前程序包不变,我不想在默认程序包中包含Wythoff.java,它必须位于/中游戏

3 个答案:

答案 0 :(得分:2)

Class.forName(nomClasse);需要完整的类名,如the docs中所述。

因此您必须输入Game.Wythoff

答案 1 :(得分:1)

Class.forName(nomClasse);需要类名的完全合格路径。请将nomClasse更改为(packgname.classname)和Improt Appropriat软件包。

注意:-有关更多信息,请阅读Java文档。 链接:-https://docs.oracle.com/javase/8/docs/api/

答案 2 :(得分:0)

您需要输入fr.insalyon.tc.framework.Game.Wythoff这是标准名称。 或者,您也可以键入Game.Wythoff,因为包含main方法的类在直接父包中。并且请注意,程序包名称通常以简单字母开头,例如game而不是Game