2016-11-12 3 views
0

Я пробовал работать над этим в течение нескольких часов и все еще не мог понять это правильно, поэтому решил, что я спрошу. Я пытаюсь использовать log4j для написания программных операторов в выходной файл и очень хорошо работает на моей локальной машине.Исходная папка в Runnable Jar Disappearing

В настоящее время у меня есть файл log4j.properties в папке с именем logging. Он помечен как исходная папка. При создании моего исполняемого JAR-файла через eclipse я помещаю его на другой сервер для запуска, и он говорит, что файл log4j.properties не найден. Я пробовал несколько разных вещей до сих пор, и ничего не работает. Все, что я хочу сделать, это убедиться, что файл log4j.properties включен в runnable JAR. Теперь моя настройка следующая.

Project foler - called test 

-logging\log4j.properties. 

В моей программе Java у меня есть следующий код, который работает локально. Я пропустил какой-то фундаментальный шаг во время процесса создания JAR в Eclipse? Похоже, это должно быть легко, но это не сейчас. Я даже извлек JAR в 7zip после создания и, конечно, файл регистрации не существует вообще. По какой-то причине, похоже, он совершенно исчез. Я был бы очень признателен, если бы кто-нибудь мог мне помочь, спасибо.

public static void main(String[] args) 
    { 

     FileInputStream fis = new FileInputStream("logging\\log4j.properties"); 

     if(fis != null) 
     { 
      PropertyConfigurator.configure(fis); 
     } 

     logger.info("process started."); 
    } 

UPDATE

Вместо того, чтобы использовать InputStream непосредственно, я изменил мой код, чтобы просто использовать ниже и сейчас работает, доступ к файлу в log4j.properties через работоспособную банку.

PropertyConfigurator.configure(Converter.class.getResourceAsStream("/logging/log4j.properties")); 
logger.info("Conversion process started."); 

ответ

1

Я вижу 2 вопроса: а) при создании баночки с использованием затмения, по умолчанию он только застегивает скомпилированные классы (так .class файлов) в ваш целевую .jar файла, вам необходимо указать затмить что вы также хотите включить ресурсы своего проекта, это могут быть файлы конфигурации, такие как файл свойств для log4j, но также могут быть комплектами ресурсов для сообщений i18n и т. д. Объяснение, как это сделать, можно найти здесь: Java & Eclipse: Resources in JAR? , Поэтому, если свойства для log4j не находятся в файле jar, дважды проверьте создание файла jar!

b) если у вас есть ресурсы в вашем файле jar, вы не можете их прочитать с помощью fileinputstream: они не хранятся в автономном файле, они хранятся в файле jar. Я предполагаю, что ваш файл jar является частью пути к классам, поэтому, когда вы достигли добавления ресурсов в свой файл jar, вам нужно рассматривать их как ресурсы: см. Load resource from anywhere in classpath для получения дополнительной информации по этому вопросу

+0

Спасибо, этот комментарий и исследования в других областях привели к моему ответу с использованием getresourcestream! – Tastybrownies

+0

Обновление моего вопроса! – Tastybrownies