gpt4 book ai didi

java - 无法使用 Guice 的方法 createInjector 找到符号

转载 作者:太空宇宙 更新时间:2023-11-04 09:45:11 25 4
gpt4 key购买 nike

我的项目遇到了一个奇怪的错误,我在 POM.xml 中添加了 Guice 到我的依赖项中,一切看起来都很好,IDE 给出了所有建议,即使当我编写启动注入(inject)器的代码时,它也建议了我想要使用的方法,但后来它用红色标记它,说找不到,我从来没有经历过这样的事情。也许我忘记了什么。谁能帮我吗?

我的项目是一个 Maven JavaFX 桌面应用程序。

这是错误的输出

/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java -Dmaven.multiModuleProjectDirectory=/Users/ochamo/Documents/Proyectos/apde-alumnus/APDEAlumnus "-Dmaven.home=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3" "-Dclassworlds.conf=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/bin/m2.conf" "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=52291:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath "/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/boot/plexus-classworlds-2.5.2.jar" org.codehaus.classworlds.Launcher -Didea.version2019.1 com.zenjava:javafx-maven-plugin:8.8.3:jar
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building APDE-Alumnus 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> javafx-maven-plugin:8.8.3:jar (default-cli) > [jfxjar]package @ APDE-Alumnus >>>
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ APDE-Alumnus ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 10 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ APDE-Alumnus ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 13 source files to /Users/ochamo/Documents/Proyectos/apde-alumnus/APDEAlumnus/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /Users/ochamo/Documents/Proyectos/apde-alumnus/APDEAlumnus/src/main/java/edu/apde/alumnus/main/Main.java:[22,47] cannot find symbol
symbol: class createInjector
location: class com.google.inject.Guice
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.584 s
[INFO] Finished at: 2019-04-03T12:10:32-06:00
[INFO] Final Memory: 21M/309M
[INFO] ------------------------------------------------------------------------

这是 pom.xml 中的 Guice 依赖项

<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>4.2.1</version>
</dependency>

我用来引导我的主类的代码

public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {

try {
final Injector injector = new Guice.createInjector(new MainModule()); // this is the source of the error It cannot find createInjector.

FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(Main.class.getResource("/fxml/main/main-view.fxml"));
System.out.printf("location: " + fxmlLoader.getLocation());
GridPane root = fxmlLoader.load();
Scene scene = new Scene(root);

primaryStage.setScene(scene);
primaryStage.setTitle("Login");
primaryStage.show();
} catch (IllegalStateException ex) {
ex.printStackTrace();
}
}
}

最佳答案

createInjector 方法是一个静态方法(请参阅 Javadocs )...

public static Injector createInjector(Module... modules) {
return createInjector((Iterable)Arrays.asList(modules));
}

当您尝试像这样调用它时......

new Guice().createInjector(...)

...您正在尝试调用实例方法,但该方法无法编译,因为Guice类中没有名为createInjector的实例方法..

相反,您应该像这样调用它:

Guice.createInjector(...)

要明确的是;您只需调用 Guice,而不是调用 new Guice()

背景:

  • 必须在其类的实例上调用实例方法;要调用实例方法,必须创建定义该方法的类的实例。例如:new Foo().doIt()
  • 调用静态方法时无需创建其类的实例;要调用静态方法,您只需通过其类名引用它。例如:Foo.doIt()

关于java - 无法使用 Guice 的方法 createInjector 找到符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55501865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com