Не могу получить доступ к ресурсу в JAR на всех компьютерах

Я пишу приложение (в частности, плагин для сервера Bukkit Minecraft). Для этого необходимо получить доступ к файлу .properties из JAR приложения. Здесь я столкнулся со странной проблемой. Когда я тестирую программу на своем компьютере для разработки, она работает нормально. Файл .properties загружается, и все в порядке. Однако на другом компьютере, на котором я его тестирую, я пытаюсь запустить приложение, но оно не может загрузить свойства, и InputStream имеет значение null . Вот метод, которым я загружаю файл:

public class Points {
    private HashMap<String, MessageFormat> messages;

    public Points() {
         buildMessages();
    }

public static void buildMessages() {
        Properties messageProps = new Properties();
        InputStream in = Points.class.getResourceAsStream("resources/messages.properties");
        messages = new HashMap<String, MessageFormat>();
        Enumeration en;
        try {
            messageProps.load(in);
        } catch(IOException ex) {
            System.err.println("Couldn't read message properties file!");
            return;
        } catch(NullPointerException ex) {
            System.err.println("Couldn't read message properties file!");
            if(in == null)
                System.out.println("IOStream null");
            return;
        }
        en = messageProps.propertyNames();
        while(en.hasMoreElements()) {
            String key = (String)en.nextElement();
            String prop = messageProps.getProperty(key);
            MessageFormat form = new MessageFormat(prop.replaceAll("&", 
                "\u00a7").replaceAll("`", ""));
            messages.put(key, form);
        }
    }
}

Я пропустил некоторый нерелевантный код, но это его суть. Структура JAR следующая:

   com/
       pvminecraft/
           points/
               Points.java <-- The class where the file is loaded
               resources/
                   messages.properties <-- The file being loaded

На моем ПК файл загружается из resources / messages.properties , но в другом файле InputStream имеет значение null, и Мой блок catch для NullPointerException запущен. Что могло быть причиной проблемы и как ее исправить? Спасибо.

Обновление: Даже при использовании полного пути ( /com/pvminecraft/points/resources/messages.properties ) та же проблема сохраняется.

Обновление 2: Вот полная трассировка стека:

java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:435)
    at java.util.Properties.load0(Properties.java:354)
    at java.util.Properties.load(Properties.java:342)
    at com.pvminecraft.points.Points.buildMessages(Unknown Source)
    at com.pvminecraft.points.Points.onEnable(Unknown Source)
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:188)
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:968)
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:280)
    at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:186)
    at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:169)
    at org.bukkit.craftbukkit.CraftServer.reload(CraftServer.java:436)
    at org.bukkit.Bukkit.reload(Bukkit.java:187)
    at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:22)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:165)
    at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:378)
    at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:374)
    at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:564)
    at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:541)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:425)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:457)

Все материалы org.bukkit и org.craftbukkit являются сервером. Файл.Файл свойств загружается в метод buildMessages , вызываемый методом onEnable для Points .

Обновление 3: При новой установке Arch Linux файл свойств сообщения загружается правильно, и все в порядке. Удаленный сервер - это Ubuntu Linux, а мой компьютер разработчика - Arch.

Обновление 4: Хорошо, это своего рода разрешение. Вроде проблема локальная. Я говорю это потому, что мне удалось получить доступ еще к двум компьютерам, и программа корректно работает на обоих. Хотя это и раздражает, похоже, что с моим кодом или скриптами сборки ничего плохого нет. Я все еще хочу знать, что не так, но это больше не актуально. Я продолжу изучать это. Спасибо всем.

6
задан Michael Smith 6 January 2012 в 18:06
поделиться