Bir uygulama yazıyorum (özellikle Bukkit Minecraft sunucusu için bir eklenti). Bunu yapmak, uygulamanın JAR'ından bir .properties dosyasına erişmem gerektirir. Garip bir sorunla karşılaştığım yer burası. Programımı, geliştirme bilgisayarımda test ettiğimde, iyi çalışıyor. .properties dosyası yüklenir ve her şey yolunda. Ancak, test ettiğim diğer bilgisayarda uygulamayı başlatmaya çalışıyorum ve özellikleri yüklenemedi ve InputStream
null
. İşte dosyasını yüklemek ettiği yöntemdir: Bazı alakasız kod ihmal ettikTüm bilgisayarlarda JAR'daki kaynağa erişilemiyor
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);
}
}
}
ama hepsi bu özü buydu. aşağıdaki gibi JAR yapısı şöyledir: Dosya resources/messages.properties
yüklenen benim PC'de
com/
pvminecraft/
points/
Points.java <-- The class where the file is loaded
resources/
messages.properties <-- The file being loaded
, ancak diğer dosya üzerinde, InputStream
null ve NullPointerException
benim catch
blok çalıştırılır. Soruna ne neden olabilir ve nasıl düzeltebilirim? Teşekkürler.
Güncelleme: Tüm yolu (/com/pvminecraft/points/resources/messages.properties
) kullanarak bile, aynı sorun hala devam ediyor.
Güncelleme 2: sunucusudur org.bukkit
ve org.craftbukkit
şeyler
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)
Tümü: Burada tam yığın-izidir. .properties dosyası, Points
'un onEnable
yöntemiyle çağrılan buildMessages
yönteminde yüklenir.
Güncelleştirme 3: Arch Linux'un yeni yüklemesinde, ileti özellikleri dosyası doğru şekilde yüklendi ve her şey yolunda. Uzak sunucu Ubuntu Linux ve benim dev PC'm Arch.
Güncelleştirme 4: Tamam, bu bir çözüm türüdür. Yerelleştirilmiş bir sorun gibi görünüyor. Bunu söylüyorum çünkü iki bilgisayara daha erişmeyi başardım ve program her ikisinde de doğru çalışıyor. Bu rahatsız edici olsa da, bu benim kodumda yanlış bir şey gibi görünmüyor ya da betikler oluşturmuyor. Hala neyin yanlış olduğunu bilmek istiyorum, ama artık basmıyor. Buna bakmaya devam edeceğim. Herkese teşekkürler.
"Kaynaklar" dizini sınıf yolunda değil - bkz. Tom'un yanıtı. Ancak "com/pvminecraft/points/resources" dizini. Geliştirme ortamınızı kontrol edin - sınıf yolunda bulunan bir yere oturmuş özellik dosyalarının bir kopyasını ya da komik bir şekilde ayarladığınıza inanıyorum. – Paul
Lütfen yığın yığınının tamamını gönderin. – Paul
Burada satır numarası nedir: 'com.pvminecraft.points.Points.buildMessages (Bilinmeyen Kaynak)'. JDK sürümünüz nedir? – Kowser