что-то с ClassPath в скомпилированном jar-е

242
10 февраля 2019, 03:00

имею проект (Spring), который отлично запускается и работает под Eclipc-ом. Все файлы находятся. Технически они находятся в src/main/resources. Читаю например файл в коде так:

private final String KEY_FILE = "AccessKey.key";
private void setKey() {
    ApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {});
    Resource resource = appContext.getResource(KEY_FILE);
    ((ClassPathXmlApplicationContext) appContext).close();
    // работали ради этого      
    serverKey = readFile(resource);
}

private String readFile (Resource resource) {
    StringBuilder sb = new StringBuilder();
    BufferedReader br = null;
    String line;
    try {
            br = new BufferedReader(new InputStreamReader(resource.getInputStream(), "UTF-8"));
            while ((line = br.readLine()) != null) {  sb.append(line);   }
    }
    catch (IOException e) { e.printStackTrace(); }
    finally {if(br != null) try { br.close(); } catch (IOException e) { e.printStackTrace(); }}
    return sb.toString();
}

после экспорта проекта в jar, запуск приводит к ошибке:

java.io.FileNotFoundException: class path resource [AccessKey.key] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:180)

подозреваю при компиляции не задана передача ClassPath в jar. подскажите куда посмотреть.

Answer 1
  1. Самое простое и надёжное - это сделать для запуска приложения командный файл BAT/CMD или SH и в нём прописать все необходимые параметры, включая CLASSPATH.
  2. Если же очень хочется всё запихнуть внутрь JAR, то смотрите тут как включить описание CLASS-PATH в MANIFEST.MF Adding Classes to the JAR File's Classpath
  3. Можно сделать указанное в п.2 с помощью maven Adding Classes to the JAR File's Classpath
READ ALSO
ошибка при использовании -D для спрингового приложения

ошибка при использовании -D для спрингового приложения

Приложение на tomcat+spring Запускаю из идеи на локальном томкате и, в шаге с мавен, выполняю команду

242
Android или Java. Уменьшить размер изображения без (с минимальной) потери качества

Android или Java. Уменьшить размер изображения без (с минимальной) потери качества

Делаю фото в разрешении 1440x1080Использую следующий код, что бы развернуть если необходимо изображение, обрезать квадрат, и уменьшить его до 1000x1000

248
Как сохранить действие кнопки Button при смене ореинтации (а точнее сделать так что бы метод setAnswerShownResult) не “сбивался”

Как сохранить действие кнопки Button при смене ореинтации (а точнее сделать так что бы метод setAnswerShownResult) не “сбивался”

При повороте экрана активность останавливается и запускается снова, поэтому восстаналивается положение как после выполнения onCreate()Чтобы...

216