我有一个应用程序,它解析一些zip格式的文件并生成一些csv文件。所以现在我有一个要求,我必须从应用程序创建一个jar文件并从java程序调用该jar文件,以便它可以做与以前相同的工作。所以我的应用程序具有以下结构,我附上它的图片...
我正在尝试使用反射 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?
无论如何,从评论行:
- 如果 jar 位于 c:\prjs\skybin\skybin.jar
- 打开 cmd 提示符,cd 到该文件夹
cd c:\prjs\skybin\
- 下达命令 java -cp c:\prjs\skybin\skybin.jar com.gamma.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 是否正确制作,可以将其解压缩。
在命令提示符下创建一个新目录
mkdir c:\prjs\tmp2
cd 到该位置并发出命令
jar xf c:\prjs\skybin\skybin.jar
现在检查资源管理器中的输出应该会看到您的包结构和其中的类,没有额外的文件夹 根据您的图像,您应该看到 com/gamma/mail 和其他类似的文件夹
关于java - 如何使用 reflection api 从 java 程序调用 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22932867/