如何使用反射api从java程序调用jar文件

时间:2014-04-08 09:26:20

标签: java parsing jar etl

我有一个应用程序解析一些zip格式的文件并导致一些csv文件。所以现在我有一个要求,我必须从应用程序制作一个jar文件,并从java程序调用该jar,以便它可以做同样的工作。所以我的应用程序有以下结构我附上它的图片... my skybin parser

我正在尝试使用反射api来完成这项工作,基本上我正在尝试动态加载reckoner类。在我的方法中我认为它正在加载类,因为如果我拼错了类名它会给出错误。但是当我编写这段代码并尝试运行时 什么都没发生。我正在尝试下一个代码..

public class Driver {

/**
 * @param args
 */
public static void main(String[] args) {

    try{

        ClassLoader myClassLoader = ClassLoader.getSystemClassLoader();
          String classNameToBeLoaded="com.gamma.Reckoner";
          Class myClass = myClassLoader.loadClass(classNameToBeLoaded);
          Object whatInstance = myClass.newInstance();
    } catch (SecurityException e) {
        e.printStackTrace();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InstantiationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

}  

所以,当我要制作jar时,它可以尝试从另一个程序调用它,目录结构应该在那里。所以根据实际的skybin解析器做了。现在我将如何调用jar.please帮助我。我必须调用skybin.jar的Reconer.java类,它是应用程序的驱动程序。所以使用反射我可以称之为

2 个答案:

答案 0 :(得分:0)

这是一个可能的答案,真的不确定你的要求。看起来你有一个罐子,想知道如何运行它?

你是怎么得到那个罐子的? Maven / ant? IDE cliks?

无论如何评论行:

  1. 如果jar位于c:\ prjs \ skybin \ skybin.jar
  2. 打开cmd提示符,cd到该文件夹​​

      

    cd c:\ prjs \ skybin \

  3.   
  4. 发出命令   java -cp c:\ prjs \ skybin \ skybin.jar com.gamma.Reckoner
  5.      如果Reckoner没有包裹,那么

         

    java -cp c:\ prjs \ skybin \ skybin.jar Reckoner

    java应该在classpath中给出完整的路径,如

      

    c:\ program files \ etcjava \ v77 \ bin \ java -cp c:\ prjs \ skybin \ skybin.jar Reckoner

    这是您计算机上的示例路径可能不同,或者将java bin文件夹添加到路径

    做一些关于启动java和使用jar的教程

    如果在linux / mac上需要使用/ in路径而不是\

    为了找到你的罐子,你可以正确地制作它。

    1. 在命令提示符下创建一个新目录

      mkdir c:\ prjs \ tmp2

    2. cd到那并发出命令

    3. jar xf c:\ prjs \ skybin \ skybin.jar

      现在检查资源管理器中的输出应该看到你的包结构和里面的类,没有额外的文件夹 根据你的图像,你应该看到com / gamma / mail和其他文件夹

答案 1 :(得分:0)