Я пытаюсь написать программу, которая загружает классы и файлы jar. Мое приложение обрабатывает оператор плюс. Для этого у меня есть 2 класса и один файл jar:Как загрузить файл Jar в мою программу?
1-файл файла интерфейса оператора в каталоге D: \ operatorAPI (интерфейс оператора представляет собой файл JAR)
package OperatorAPI;
public interface Operator
{
int calculate(int num1 , int num2);
}
2-класс Plus в каталоге (D: \ операторов)
package operators;
import OperatorAPI.*;
public class Plus implements Operator
{
public int calculate(int num1 , int num2)
{
return num1 + num2;
}
}
3- основной класс в директории D: \ источник \ главная:
package source.main;
import java.util.*;
import java.io.*;
import java.net.URL;
import java.net.URLClassLoader;
import operatorAPI.*;
public class Main
{
public static void main(String[] args)
{
File file = new File("D:\\");
URI uri = file.toURI();
URL[] urls = new URL[] {uri.toURL}
ClassLoader classloader = new URLClassLoader (urls);
Class clazz = classloader.loadClass("operator.Plus");
Operator instance = (Operator) clazz.newInstance();
int output = instance.calculate(10,20);
System.out.println("The result is :" + output);
}
}
Но когда я запускаю свою программу в командной строке я получаю это исключение: Исключение в потоке «основной» java.lang.NoClassDefFoundError: operatorAPI/Оператор
Я думаю потому, что интерфейс оператора баночка файл я должен загрузить это моя программа. Но я не знаю. Как это сделать. Может ли кто-нибудь мне помочь?
D: \ operatorAPI добавлен в classpath? – Rehman
Все, что вы делаете, добавляет диск 'D: \' к загрузчику классов, вы на самом деле не загружаете файлы Jar – MadProgrammer
yes Я запускаю этот путь: java -cp Operator.jar source/main/Main.My teacher сказал, что я должен загрузить Operator.jar в классе Main. Но я не знаю, как это сделать. – soha