0

I'm trying to copy the file "config.yml" into "plugins/AntiAura/config.yml".

However, I keep getting an NPE.

    [14:48:22 WARN]: java.lang.NullPointerException
    [14:48:22 WARN]:        at a.e.a(Main.java:413)
    [14:48:22 WARN]:        at a.e.d(Main.java:384)
    [14:48:22 WARN]:        at a.e.onEnable(Main.java:637)
    [14:48:22 WARN]:        at         org.bukkit.plugin.java.JavaPlugin.setEnabled(    JavaPlug
      in.java:321)
         [14:48:22 WARN]:        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(
JavaPluginLoader.java:335)
    [14:48:22 WARN]:        at org.bukkit.plugin.SimplePluginManager.enablePlugin(Si
mplePluginManager.java:405)
    [14:48:22 WARN]:        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.loadPlugin
(CraftServer.java:355)
    [14:48:22 WARN]:        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.enablePlug
ins(CraftServer.java:315)
    [14:48:22 WARN]:        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.reload(Cra
ftServer.java:744)
    [14:48:22 WARN]:        at org.bukkit.Bukkit.reload(Bukkit.java:534)
    [14:48:22 WARN]:        at org.bukkit.command.defaults.ReloadCommand.execute(Rel
oadCommand.java:23)
    [14:48:22 WARN]:        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCo
mmandMap.java:141)
    [14:48:22 WARN]:        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCo
mmand(CraftServer.java:645)
    [14:48:22 WARN]:        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchSe
rverCommand(CraftServer.java:631)
    [14:48:22 WARN]:        at net.minecraft.server.v1_8_R1.DedicatedServer.aM(Dedic
atedServer.java:353)
    [14:48:22 WARN]:        at net.minecraft.server.v1_8_R1.DedicatedServer.z(Dedica
tedServer.java:317)
    [14:48:22 WARN]:        at net.minecraft.server.v1_8_R1.MinecraftServer.y(Minecr
aftServer.java:623)
    [14:48:22 WARN]:        at net.minecraft.server.v1_8_R1.MinecraftServer.run(Mine
craftServer.java:526)
    [14:48:22 WARN]:        at java.lang.Thread.run(Thread.java:722)
    [14:48:22 INFO]: null ||

As you can see from the de-bug message at the bottom of the stacktrace, then the line I am using,

InputStream jarURL = Main.class.getResourceAsStream("/config.yml");

is simply returning null.

I have tried both InputStream jarURL = Main.class.getResourceAsStream("/config.yml"); and InputStream jarURL = Main.class.getResourceAsStream("config.yml");. The file "config.yml" is definitely in the JAR file:

enter image description here enter image description here

The solutions suggested here, here, and here are things I am already doing, and do not solve the issue.

What is wrong here?

Community
  • 1
  • 1
Joehot200
  • 1,070
  • 15
  • 44
  • 1
    Unless the qualified name of your `Main` class is `plugins.AntiAura.Main`, both attempts are false. Prepending the name with a `/` implies that it is resolved as an absolute path, while omitting the `/` implies resolving relative to the `Class` on which you invoke the method. You may try `Main.class.getResourceAsStream("/plugins/AntiAura/config.yml")`… – Holger Mar 11 '15 at 15:00
  • Ah! So I need to put it in the OBFUSCATED package!! Well, that's another extra step for every new version release *sighs*. Thanks for the help! – Joehot200 Mar 11 '15 at 15:04
  • Still looking for a more practical solution if anyone's got one. – Joehot200 Mar 11 '15 at 15:09
  • That depends on your obfuscator, i.e. when the resource resided in the same package/folder before obfuscation, the tool should offer to adapt the resource path automatically. I know that `yguard` has such an option and would expect others to have a similar option as well. – Holger Mar 11 '15 at 15:23

1 Answers1

2

you have not config.yml in your classpath's root but in joehot200, so you need getResourceAsStream("/joehot200/config.yml")

dtortola
  • 768
  • 4
  • 6