Метод, приведенный ниже, должен читать классы/файлы из определенного каталога. Он отлично работает при отладке метода в eclipse. Но после его создания с помощью ant scannedDir больше не является каталогом. Кто-нибудь знает, как изменить его, чтобы он по-прежнему работал после развертывания? Заранее спасибо!Каталог превращается в файл после сборки ant. Как с этим справиться?
private static List<Class<?>> find(String scannedPackage) {
logger.trace("Scanned package='{}'", scannedPackage);
String scannedPath = scannedPackage.replace(DOT, SLASH);
logger.trace("Scanned path='{}'", scannedPath);
URL scannedUrl = Thread.currentThread().getContextClassLoader().getResource(scannedPath);
logger.trace("Scanned url='{}'", scannedUrl);
if (scannedUrl == null) {
throw new IllegalArgumentException(String.format(BAD_PACKAGE_ERROR, scannedPath, scannedPackage));
}
File scannedDir = new File(scannedUrl.getFile());
logger.trace("scannedDir.isDirecory='{}'", scannedDir.isDirectory());
List<Class<?>> classes = new ArrayList<Class<?>>();
for (File file : scannedDir.listFiles()) {
logger.trace("currentFile='{}'", file.getAbsolutePath());
classes.addAll(find(file, scannedPackage));
}
return classes;
}
Так подробно: Когда я запускаю его с помощью режима отладки затмения scannedDir.isDirectory=true
. Но после его строительства scannedDir.isDirectory=false
Приветствия!
EDIT:
scannedDir.getAbsolutePath()
возвращает jar:file:/C:/Users/xxx.xxx/AppData/Local/XBRLGEN/app/xbrl_s2.jar!/eu/europa/eiopa/xbrl/s2c/dict/dom
Вы распечатали «URL»? Если вы создали файл 'jar',' URL' не будет иметь протокол 'file:' и не может быть преобразован в объект 'File'. – Holger
Его файл в банке! Добавил вывод на мой пост! – nouseforaname