java - 如何使用 reflection api 从 java 程序调用 jar 文件

标签 java parsing jar etl

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

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

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。请帮助我。我必须调用skybin.jar的Reconer.java类,它是应用程序的驱动程序。所以使用反射我可以调用它

最佳答案

这是一个可能的答案,真的不确定你在问什么。看起来您有一个 jar 并且想知道如何运行它?

你是怎么得到那个 jar 的? Maven/ Ant ? IDE cliks?

无论如何,从评论行:

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

    cd c:\prjs\skybin\

  3. 下达命令 java -cp c:\prjs\skybin\skybin.jar com.gamma.Reckoner
如果 Reckoner 没有软件包,则

java -cp c:\prjs\skybin\skybin.jar 计算器

java 应该在类路径中,否则给出完整路径,如

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

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

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

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

要确定您的 jar 是否正确制作,可以将其解压缩。

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

    mkdir c:\prjs\tmp2

  2. cd 到该位置并发出命令

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

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

关于java - 如何使用 reflection api 从 java 程序调用 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22932867/

相关文章:

java - 声明 'Array' 的 url

java - 从可运行的 jar 中列出目录中的文件

java - ProGuard 混淆

java - 文件下载代码下载比原始文件大的文件

java - 如何创建自定义 JDBCrealm?

java - 如何定期跟踪网络变化

java - 如何将 Mono<List<String>> 转换为 Flux<String>

C# 邮件主题解析

c++ - 读取二进制格式的问题 [C++]

java-jar : What's the default class path?