我正在用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,它必须位于/中游戏
答案 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
。