gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:13 25 4
gpt4 key购买 nike

我有一个应用程序,它解析一些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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com