최근 자바에서 depency 주입을 조금 해보았습니다. 저는이 분야의 완전한 초보자입니다. 그리고 저는 실제로 얻지 못합니다. 왜이 간단한 예에서 나는 계속 오류를 받아들입니다. 다음과 같이Eclipse에서 Java 빌드 경로 오류
package michal.dependency;
import com.google.inject.Guice;
import com.google.inject.Injector;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Injector injector = Guice.createInjector(new ProjectModule());
Person person = injector.getInstance(Person.class);
person.greetFriend();
}
}
I 나타나는 오류 메시지는 다음과 같습니다
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableList
at com.google.inject.internal.Errors.<clinit>(Errors.java:656)
at com.google.inject.internal.InternalInjectorCreator.<init>(InternalInjectorCreator.java:62)
at com.google.inject.Guice.createInjector(Guice.java:96)
at com.google.inject.Guice.createInjector(Guice.java:73)
at com.google.inject.Guice.createInjector(Guice.java:62)
at michal.dependency.Main.main(Main.java:14)
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.ImmutableList
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 6 more
내가 필요한 .jar 파일을 클래스 패스에 포함되어있는 방법에 의해 확신 해요. 사전에
package michal.dependency;
import com.google.inject.Inject;
public class Person {
private MessageService messageService;
@Inject
public Person (MessageService messageService)
{
this.messageService = messageService;
}
public void greetFriend()
{
messageService.sendMessage("Hey!", "How are you?");
}
}
감사 :
여기의 요청에 따라 요청 된 Person 클래스를 온다.
'내가 필요한 .jar 파일을 클래스 패스에 포함되어'컴파일하는 동안 **와 ** 당신의 응용 프로그램을 실행 확신에도 불구하고? http://stackoverflow.com/questions/1457863/what-is-the-difference-between-noclassdeffounderror-and-classnotfoundexception을 살펴보십시오. – Pshemo
확실한 경우 컴파일러가 잘못 되었음이 분명합니다. 그것을 설득하려고 노력하십시오. – perencia
참조 된 라이브러리로 나타나며 프로젝트 속성에서 Order 및 Export의 맨 위에 있습니다. 당신이 사용하고있는 Guice의 버전은 –