Мне нужно сканировать класс или файл jar, который реализует или расширяет определенный класс.
Это тот же механизм, что и Eclipse для сканирования присутствия плагина. Есть ли способ сделать это?Сканировать класс или файл jar в Java
ответ
От exmaple depot: How to load a Class that is not on the classpath:
// Create a File object on the root of the directory
// containing the class file
File file = new File("c:\\class\\");
try {
// Convert File to a URL
URL url = file.toURL(); // file:/c:/class/
URL[] urls = new URL[]{url};
// Create a new class loader with the directory
ClassLoader loader = new URLClassLoader(urls);
// Load in the class; Class.childclass should be located in
// the directory file:/c:/class/user/information
Class cls = loader.loadClass("user.informatin.Class");
} catch (MalformedURLException e) {
} catch (ClassNotFoundException e) {
}
Список файлов в каталоге, при необходимости, используя File.list()
.
Когда класс загружен, вы можете проверить, реализует ли он конкретный интерфейс, выполнив clazz.isInstance
. Из документов:
Определяет, совместим ли указанный объект с объектом, представленным этим классом. Этот метод является динамическим эквивалентом оператора экземпляра языка Java.
Для загрузки классов из JAR-файла:
How to load a jar file at runtime
Чтобы получить список файлов в файле фляги: JarFile.entries()
.
Да, есть способы только для этого. Посмотрите на документы here.
Более конкретные ссылки,
Как я могу загрузить этот конкретный класс? Я сканирую его, но тогда мне также нужно загрузить это, только если он реализует определенный интерфейс. – enfix
@enfix: сначала вы загружаете его, затем сканируете его, если он соответствует вашему требованию, используйте его, иначе бросьте его. –
Вы можете сканировать его без загрузки класса с помощью парсера байт-кода, такого как ASM или BCEL. С ASM ...
byte[] bytecode = [read bytes from class or jar file];
ClassReader reader = new ClassReader(bytecode);
String[] interfaces = reader.getInterfaces();
- 1. Сканировать текстовый файл в Java
- 2. Jar-файл, содержащий класс - com.sun.enterprise.naming.impl.SerialInitContextFactory
- 3. Java Редактировать Jar-файл
- 4. перезаписать класс java в jar
- 5. Ошибка: не удалось найти или загрузить основной класс - файл JAR
- 6. Android Studio исключает класс или файл из jar
- 7. где основной класс Java в Jar указан
- 8. Jar файл java
- 9. Java - Аргументы в Jar Файл исполняемый файл
- 10. Java-исполняемый файл Jar
- 11. Java -jar ERROR: не удалось найти или загрузить основной класс
- 12. Java Eclipse исполняемый файл jar
- 13. java класс не распознает файл jar im im import
- 14. Как сканировать открытый файл?
- 15. JAVA: невозможно запустить файл jar
- 16. SBT: Класс, не включенный в файл jar
- 17. java .jar файл конвертировать в .exe файл
- 18. Когда команда «jar» откажется добавить класс в файл .jar?
- 19. Кастинг в класс jar
- 20. Как преобразовать файл .java или .jar в исполняемый файл Linux (без расширения .jar, что означает, что это не файл .jar)
- 21. JAR файл: Не удалось найти основной класс
- 22. java класс из jar в coldfusion - NoClassDefFoundError
- 23. Может ли файл jar использовать целевой класс?
- 24. Мой .jar файл не работает в java
- 25. Повторно скомпилировать Java-класс из Jar
- 26. Невозможно редактировать класс java в JAR
- 27. Как импортировать файл .Jar в Java Script
- 28. Невозможно сканировать компоненты из подпакета - Spring Jar
- 29. Редактировать файл Jar с xml или файлом свойств в Java
- 30. Java-программа, использующая класс из JAR-файла
есть способы, но вам это не нужно;) – Bozho
@Bozho: Почему бы и нет? Не говорите мне, что вы чувствуете его запах;). –