Java 如何在使用另一个jar文件时创建jar文件?
我正在尝试编写应用程序。在应用程序中,我使用另一个jar文件(opr.jar)。在opr.jar(d:\opr.jar)中,我有一个接口运算符:Java 如何在使用另一个jar文件时创建jar文件?,java,jar,Java,Jar,我正在尝试编写应用程序。在应用程序中,我使用另一个jar文件(opr.jar)。在opr.jar(d:\opr.jar)中,我有一个接口运算符: package operatorAPI; public interface Operator { int calculate(int num1 , int num2); } 此外,我还有实现操作员界面的class Plus(d:\math\Plus): package math; import operatorAPI.*; public
package operatorAPI;
public interface Operator
{
int calculate(int num1 , int num2);
}
此外,我还有实现操作员界面的class Plus(d:\math\Plus):
package math;
import operatorAPI.*;
public class Plus implements Operator
{
public int calculate(int num1 , int num2)
{
return num1 + num2;
}
}
package source.main;
import java.util.*;
import java.io.*;
import java.net.URL;
import java.net.URLClassLoader;
import operatorAPI.*;
public class Sum
{
public static void main(String[] args) throws Exception
{
File operatorFile = new File("D:\\");
URL operatorFilePath = operatorFile.toURL();
URL[] operatorFilePaths = new URL[]{operatorFilePath};
ClassLoader operatorsLoader = new URLClassLoader(operatorFilePaths);
Class currentClass = operatorsLoader.loadClass("math.Plus");
Operator instance = (Operator) currentClass.newInstance();
int output = instance.calculate(10,20);
System.out.println("The result is :" + output);
}
}
在主程序(d:\source\main\Sum)中,我加载class Plus并使用操作员界面:
package math;
import operatorAPI.*;
public class Plus implements Operator
{
public int calculate(int num1 , int num2)
{
return num1 + num2;
}
}
package source.main;
import java.util.*;
import java.io.*;
import java.net.URL;
import java.net.URLClassLoader;
import operatorAPI.*;
public class Sum
{
public static void main(String[] args) throws Exception
{
File operatorFile = new File("D:\\");
URL operatorFilePath = operatorFile.toURL();
URL[] operatorFilePaths = new URL[]{operatorFilePath};
ClassLoader operatorsLoader = new URLClassLoader(operatorFilePaths);
Class currentClass = operatorsLoader.loadClass("math.Plus");
Operator instance = (Operator) currentClass.newInstance();
int output = instance.calculate(10,20);
System.out.println("The result is :" + output);
}
}
我使用命令行编译和运行该程序。我的应用程序工作正常,但当我尝试将我的主程序(source.main.Sum)作为名为app.jar的可执行jar文件并运行时,我遇到以下异常:
NoClassDefFoundError : operatorAPI/Operator
我创建并运行jar 0file,如下所示:
jar -cvfe app.jar source.main.Sum source/main/Sum.class
java -cp opr.jar;. -jar app.jar
有人能告诉我为什么会发生这种情况吗?您的清单文件正确吗?是的,我想是的。清单版本:1.0创建人:1.7.0_45(Oracle公司)主类:source.Main.Main您的错误是编译时使用了
operatorAPI/Operator
,但在运行时找不到它,所以在你的类路径中有一个问题,它是否像主类:?@Maximus Decimus Meridius Yes你的清单文件正确吗?是的,我想是的。清单版本:1.0创建人:1.7.0_45(Oracle Corporation)主类:source.Main.Main您的错误是编译时使用了operatorAPI/Operator
,但在运行时找不到它,因此您的类路径中存在一个问题,它是否像主类:?@Maximus Decimus Meridius yes