есть код
public String createMethodHelper() throws CannotCompileException, InstantiationException, NotFoundException, IllegalAccessException, NoSuchMethodException, InvocationTargetException, ClassNotFoundException {
// System.setProperty("user.dir", "C:\\Java\\IdeaProjects\\testScandJavaCafee\\src\\main\\java\\ru");
String dir2=null;
File jarFile = new File(".");
if (jarFile.exists()) {
dir2 = jarFile.getAbsolutePath();
}
System.out.println(dir2);
ClassLoader loader= new DynamicClassOverloader(new String[] {"."});
Class clazz= Class.forName("ru.testScandJavaCafee.controller.Helper2",true,loader);
if (jarFile.exists()) {
dir2 = jarFile.getAbsolutePath();
}
System.out.println(dir2);
Object newClassInstance1= clazz.newInstance();
Method method1 = newClassInstance1.getClass().getMethod("createList");
String dir=null;
if (jarFile.exists()) {
dir = jarFile.getAbsolutePath();
}
System.out.println(dir);
String sum = (String) method1.invoke(newClassInstance1);
System.out.println(sum);
return sum;
}
Вывод следующий
C:\Java\apache-tomcat-7.0.75\bin\.
C:\Java\apache-tomcat-7.0.75\bin\.
C:\Java\apache-tomcat-7.0.75\bin\.
200
200 - возвращает метод createList. Всё на этом этапе работает. Загружается класс по адресу
C:\Java\apache-tomcat-7.0.75\bin\ru\testScandJavaCafee\controller\Helper2
Но я хочу вызвать другой метод из другой директории. Метод Helper
из
C:\Java\IdeaProjects\testScandJavaCafee\src\main\java\ru\testScandJavaCafee\controller\
Для этого раскомментирую закомментированную строку и меняю строку с указание класса:
System.setProperty("user.dir", "C:\\Java\\IdeaProjects\\testScandJavaCafee\\src\\main\\java\\ru\\testScandJavaCafee\\controller");
Class clazz= Class.forName("Helper",true,loader);
но получаю ошибку, что такой класс не найден! Но, что очень странно на мой взгляд, если оставить строку с именем класса как сразу, то загрузится первоначальный класс, хотя путь совсем другой уже. Т.е. если раскомментировать и оставить строку:
Class clazz= Class.forName("ru.testScandJavaCafee.controller.Helper2",true,loader);
Получаю вывод
C:\Java\IdeaProjects\testScandJavaCafee\src\main\java\ru\testScandJavaCafee\controller\.
C:\Java\IdeaProjects\testScandJavaCafee\src\main\java\ru\testScandJavaCafee\controller\.
C:\Java\IdeaProjects\testScandJavaCafee\src\main\java\ru\testScandJavaCafee\controller\.
200
Т.е. адрес вроде меняется, но в любом случае вызывается только метод по первому адресу. Помогите разобраться, чет я очень запутался(
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Впервые работаю с Java и Intelij idea, да и собственно с Селенидом тожеПрежде использовал с# со студией и побывал Селениум
Объясните пожалуйста, как происходит добавление объекта ZipEntry в архив с помощью метода putNextEntry() класса ZipOutputStream, так как я новичок не получается...