나는캐스트
--> : Inherit
TwittEntititesNetwork --> TwitterGephiStreamer
TwittGrapher --> TwitterGephiStreamer
TwitterGephiStreamer is Abstract
TwitterGephiStreamer have a method : myMethod()
Directory
./myApp.jar
./NetworkLogicDirectory/TwittGrapher.jar
./NetworkLogicDirectory/TwittEntititesNetwork.jar
내가 동적으로 (다른 .jar 파일에있는) 딸 클래스
public static TwitterGephiStreamer LoadNetworkLogicJar() throws Exception
{
File dir = new File(NetworkLogicDirectory);
URL[] urls = new URL[dir.listFiles().length];
for(int i = 0;i < dir.listFiles().length;i++)
{
File s = dir.listFiles()[i];
String url = "file:///"+s.getAbsolutePath();
urls[i] = new URL(url);
}
ClassLoader = new URLClassLoader(urls);
if(defaultProps.containsKey("NetworkLogic") && !defaultProps.getProperty("NetworkLogic").isEmpty())
{
Class<?> networkLogicClassLoader = ClassLoader.loadClass("org.naoyun.gephistream.networklogic."+defaultProps.getProperty("NetworkLogic"));
Object object = networkLogicClassLoader.newInstance();
return (TwitterGephiStreamer) object;
}
else
{
throw new Exception("blabalbalbal ");
}
}
을로드하려면이 코드를 사용하여이 조직에 어떤 수업을
그래서 정상적인 클래스로 사용할 수있는 TwitterGephiStreamer를 반환해야하며 정상적으로 myMethod()를 사용할 수 있습니다.
eclispe에서 실행할 때 오류가 발생하지 않습니다.
java.lang.ClassCastException: org.naoyun.gephistream.networklogic.TwittEntitiesNetwork cannot be cast to org.naoyun.gephistream.TwitterGephiStreamer
at org.naoyun.utils.ConfigurationTools.LoadNetworkLogicJar(ConfigurationTools.java:62)
at org.naoyun.TwitterStreamer.<init>(TwitterStreamer.java:34)
at org.naoyun.TwitterStreamer.main(TwitterStreamer.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
그래서, 나는이 문제를 해결하는 방법을 모른다 : 나는 실행 가능한 .JAR (myApp.jar)로 내 응용 프로그램을 내보낼 때
그것은 나에게이 오류가 발생합니다. 소름 끼치는 코드일까요?하지만 Eclispe는 즉시 처리 할 수 있습니까? 그렇지 않은 다른 것들이 있습니까?
시간 내 주셔서 감사합니다.
왜 새 인스턴스를 이렇게 만들면됩니까? – Paul
글쎄, 누군가 다른 사람이 TwitterGephiStreamer로부터 상속받은 클래스를 만든다면, 그는 단지 자신의 클래스와 함께 jar 파일을 적절한 디렉토리에 넣고 클래스를 사용하기를 원한다고 말한다. – Totetmatt
이클립스와 내 보낸 jar 파일이 동일한 .class 생성을 사용하고 있습니까? – jenaiz