2014-01-13 43 views
0

在urlclassloaders上的其他线程中获得一些帮助之后 - understanding urlclassloader, how to access a loaded jar's classes 我有一个关于问题的问题,因为我认为我没有正确处理该问题。java urlclassloader调用具有导入依赖关系的类

myPackageA.start具有的URLClassLoader主叫myPackageB.comms
myPackageB.comms具有用下面的代码

package myPackageB; 

    import org.jgroups.JChannel; 

    public class SimpleChat { 
    JChannel channel; 
    String user_name=System.getProperty("user.name", "n/a"); 

     private void start() throws Exception { 
      channel=new JChannel(); 
      channel.connect("ChatCluster"); 
      channel.getState(null, 10000); 
      channel.close(); 
     } 

     public static void main(String[] args) throws Exception { 
      new SimpleChat().start(); 
     } 
    } 

通常我会调用具有java -cp /home/myJars/jgroups-3.4.2.Final.jar:myPackageB myPackageB.SimpleChat上面的代码的相关性,以import org.jgroups.JChannel 形式/home/myJars/jgroups-3.4.2.Final.jar和运行正常。

我的问题是howit可以设定在脚本中的-cp因此使用下面的代码时,进口的作品叫myPackageB.SimpleChatjava -cp myPackageA.jar myPackageA.start

package myPackageA; 
import java.lang.reflect.Field; 
import java.lang.reflect.Method; 
import java.net.URL; 
import java.net.URLClassLoader; 

public class start 
{ 
    Class<?> clazz; 

    private void start() throws Exception 
    { 
     if (this.clazz == null) 
      throw new Exception("The class was not loaded properly"); 

     Object mySc = this.clazz.newInstance(); 
     Method sC = this.clazz.getDeclaredMethod("main", String[].class); 
     String[] params = null; 
     sC.invoke(mySc, (Object) params); 
    } 

    public void loadSc() throws Exception 
    { 
     URL classUrl; 
     classUrl = new URL("file:///home/myJars/myPackageB.jar"); 
     URL[] classUrls = { classUrl }; 
     URLClassLoader ucl = new URLClassLoader(classUrls); 
     Class<?> c = ucl.loadClass("myPackageB.SimpleChat"); 
     this.clazz = c; 
    } 

    public static void main(String[] args) throws Exception 
    { 
     start startnow = new start(); 
     startnow.loadSc(); 
     startnow.start(); 
    } 
} 

感谢
艺术

回答

0

只需添加URL对于jgroups-3.4.2.Final.jarURLClassLoader's的URL数组。

+0

你能举个例子,thx艺术 –