Java, seemingly randomly, started crashing on FileHandle.class.getResourceAsStream(path);












0















So, I'm working on a program that allows you to import animations in the form of JSON files into Minecraft, and, when working on a completely different part of the program, my import code stopped working.



I'm using eclipse, and this is how my import code looks:



package com.github.sam54123.mc_animation.utils;

import java.io.InputStream;

public class FileHandle
{
public static InputStream inputStreamFromFile(String path)
{
try
{
InputStream inputStream = FileHandle.class.getResourceAsStream(path);
return inputStream;
}
catch(Exception e)
{
e.printStackTrace();
}

return null;

}
}


new file



package com.github.sam54123.mc_animation.utils;

import java.io.File;
import java.io.InputStream;
import java.util.Scanner;

import org.json.JSONObject;

public class JSONUtils
{
public static String getJSONStringFromFile(String path)
{
// Open file
Scanner scanner;
try
{
InputStream in = FileHandle.inputStreamFromFile(path);
scanner = new Scanner(in);
// Get JSON as string without spaces or newlines
String json = scanner.useDelimiter("\Z").next();

// Close file
scanner.close();

return json;

}
catch(Exception e)
{
System.out.println(e.getStackTrace());
return null;
}


}

public static JSONObject getJSONObjectFromFile(String path)
{
File file = new File(path);
if (!file.exists())
{
System.out.println("Invalid Path");
return null;
}

String string = getJSONStringFromFile(path);
return new JSONObject(string);

}



}


And I proceed to do some more fancy pampering of the file later on. This used to work reliably, until I made this in a completely different and un-related class:



String command = getCommand(object);

if (command != null && command.length() > 0)
{
commands.add(new AnimCommand(command, i));
}


And then it started throwing this error:



   [Ljava.lang.StackTraceElement;@7852e922
Exception in thread "main" java.lang.NullPointerException
at java.io.StringReader.<init>(Unknown Source)
at org.json.JSONTokener.<init>(JSONTokener.java:94)
at org.json.JSONObject.<init>(JSONObject.java:406)
at com.github.sam54123.mc_animation.utils.JSONUtils.getJSONObjectFromFile(JSONUtils.java:47)
at com.github.sam54123.mc_animation.system.Animation.<init>(Animation.java:20)
at com.github.sam54123.mc_animation.testing.Tester.main(Tester.java:13)


I've double checked that the file hasn't changed, and I tried deleting that section of code, restarting Eclipse, the whole deal, and nothing seems to fix it. The code is even able to recognize that the file is valid using the File class, but nothing seems to change. Does anyone have some insight on how this might be fixed? Here is the rest of my code: https://github.com/Sam54123/mc-animation/



EDIT



Okay, I've just done some more debugging, and it looks like it's the



return new JSONObject(string);


on line 47 of the second file that's crashing. No idea why, as the risky stuff of reading a file off disk is okay.



EDIT 2
It looks looks like it's failing because



InputStream in = FileHandle.inputStreamFromFile(path);


is returning null, which makes sense because of the try catch statement



InputStream inputStream = FileHandle.class.getResourceAsStream(path);


is in. Why that's failing beats me though, because the validity of the file is verified elsewhere in the code. It also used to work, and I haven't changed anything about the layout of the files.



EDIT 3
Interesting, a couple System.out.printlns reveal the catch is not actually getting activated, and therefore getResourceAsStream() must actually be returning null. I've confirmed this by printing it out before I return it.










share|improve this question




















  • 1





    Can you point out the line number where the NPE is taking place?

    – Nicholas K
    Nov 24 '18 at 6:56











  • You're calling getJSONStringFromFile twice, with the first call's output fed into the second. Is this really what you intended to do? If the first call actually returns JSON, how can you read it as a file?

    – Vasan
    Nov 24 '18 at 7:01











  • saw that and fixed. That was a debugging step I attempted to take and failed though. Bug still exists.

    – Sam54123
    Nov 24 '18 at 7:12











  • Is string null?

    – Nicholas K
    Nov 24 '18 at 7:15











  • Just looked and put it in Edit 2, with a batch of new info

    – Sam54123
    Nov 24 '18 at 7:20
















0















So, I'm working on a program that allows you to import animations in the form of JSON files into Minecraft, and, when working on a completely different part of the program, my import code stopped working.



I'm using eclipse, and this is how my import code looks:



package com.github.sam54123.mc_animation.utils;

import java.io.InputStream;

public class FileHandle
{
public static InputStream inputStreamFromFile(String path)
{
try
{
InputStream inputStream = FileHandle.class.getResourceAsStream(path);
return inputStream;
}
catch(Exception e)
{
e.printStackTrace();
}

return null;

}
}


new file



package com.github.sam54123.mc_animation.utils;

import java.io.File;
import java.io.InputStream;
import java.util.Scanner;

import org.json.JSONObject;

public class JSONUtils
{
public static String getJSONStringFromFile(String path)
{
// Open file
Scanner scanner;
try
{
InputStream in = FileHandle.inputStreamFromFile(path);
scanner = new Scanner(in);
// Get JSON as string without spaces or newlines
String json = scanner.useDelimiter("\Z").next();

// Close file
scanner.close();

return json;

}
catch(Exception e)
{
System.out.println(e.getStackTrace());
return null;
}


}

public static JSONObject getJSONObjectFromFile(String path)
{
File file = new File(path);
if (!file.exists())
{
System.out.println("Invalid Path");
return null;
}

String string = getJSONStringFromFile(path);
return new JSONObject(string);

}



}


And I proceed to do some more fancy pampering of the file later on. This used to work reliably, until I made this in a completely different and un-related class:



String command = getCommand(object);

if (command != null && command.length() > 0)
{
commands.add(new AnimCommand(command, i));
}


And then it started throwing this error:



   [Ljava.lang.StackTraceElement;@7852e922
Exception in thread "main" java.lang.NullPointerException
at java.io.StringReader.<init>(Unknown Source)
at org.json.JSONTokener.<init>(JSONTokener.java:94)
at org.json.JSONObject.<init>(JSONObject.java:406)
at com.github.sam54123.mc_animation.utils.JSONUtils.getJSONObjectFromFile(JSONUtils.java:47)
at com.github.sam54123.mc_animation.system.Animation.<init>(Animation.java:20)
at com.github.sam54123.mc_animation.testing.Tester.main(Tester.java:13)


I've double checked that the file hasn't changed, and I tried deleting that section of code, restarting Eclipse, the whole deal, and nothing seems to fix it. The code is even able to recognize that the file is valid using the File class, but nothing seems to change. Does anyone have some insight on how this might be fixed? Here is the rest of my code: https://github.com/Sam54123/mc-animation/



EDIT



Okay, I've just done some more debugging, and it looks like it's the



return new JSONObject(string);


on line 47 of the second file that's crashing. No idea why, as the risky stuff of reading a file off disk is okay.



EDIT 2
It looks looks like it's failing because



InputStream in = FileHandle.inputStreamFromFile(path);


is returning null, which makes sense because of the try catch statement



InputStream inputStream = FileHandle.class.getResourceAsStream(path);


is in. Why that's failing beats me though, because the validity of the file is verified elsewhere in the code. It also used to work, and I haven't changed anything about the layout of the files.



EDIT 3
Interesting, a couple System.out.printlns reveal the catch is not actually getting activated, and therefore getResourceAsStream() must actually be returning null. I've confirmed this by printing it out before I return it.










share|improve this question




















  • 1





    Can you point out the line number where the NPE is taking place?

    – Nicholas K
    Nov 24 '18 at 6:56











  • You're calling getJSONStringFromFile twice, with the first call's output fed into the second. Is this really what you intended to do? If the first call actually returns JSON, how can you read it as a file?

    – Vasan
    Nov 24 '18 at 7:01











  • saw that and fixed. That was a debugging step I attempted to take and failed though. Bug still exists.

    – Sam54123
    Nov 24 '18 at 7:12











  • Is string null?

    – Nicholas K
    Nov 24 '18 at 7:15











  • Just looked and put it in Edit 2, with a batch of new info

    – Sam54123
    Nov 24 '18 at 7:20














0












0








0








So, I'm working on a program that allows you to import animations in the form of JSON files into Minecraft, and, when working on a completely different part of the program, my import code stopped working.



I'm using eclipse, and this is how my import code looks:



package com.github.sam54123.mc_animation.utils;

import java.io.InputStream;

public class FileHandle
{
public static InputStream inputStreamFromFile(String path)
{
try
{
InputStream inputStream = FileHandle.class.getResourceAsStream(path);
return inputStream;
}
catch(Exception e)
{
e.printStackTrace();
}

return null;

}
}


new file



package com.github.sam54123.mc_animation.utils;

import java.io.File;
import java.io.InputStream;
import java.util.Scanner;

import org.json.JSONObject;

public class JSONUtils
{
public static String getJSONStringFromFile(String path)
{
// Open file
Scanner scanner;
try
{
InputStream in = FileHandle.inputStreamFromFile(path);
scanner = new Scanner(in);
// Get JSON as string without spaces or newlines
String json = scanner.useDelimiter("\Z").next();

// Close file
scanner.close();

return json;

}
catch(Exception e)
{
System.out.println(e.getStackTrace());
return null;
}


}

public static JSONObject getJSONObjectFromFile(String path)
{
File file = new File(path);
if (!file.exists())
{
System.out.println("Invalid Path");
return null;
}

String string = getJSONStringFromFile(path);
return new JSONObject(string);

}



}


And I proceed to do some more fancy pampering of the file later on. This used to work reliably, until I made this in a completely different and un-related class:



String command = getCommand(object);

if (command != null && command.length() > 0)
{
commands.add(new AnimCommand(command, i));
}


And then it started throwing this error:



   [Ljava.lang.StackTraceElement;@7852e922
Exception in thread "main" java.lang.NullPointerException
at java.io.StringReader.<init>(Unknown Source)
at org.json.JSONTokener.<init>(JSONTokener.java:94)
at org.json.JSONObject.<init>(JSONObject.java:406)
at com.github.sam54123.mc_animation.utils.JSONUtils.getJSONObjectFromFile(JSONUtils.java:47)
at com.github.sam54123.mc_animation.system.Animation.<init>(Animation.java:20)
at com.github.sam54123.mc_animation.testing.Tester.main(Tester.java:13)


I've double checked that the file hasn't changed, and I tried deleting that section of code, restarting Eclipse, the whole deal, and nothing seems to fix it. The code is even able to recognize that the file is valid using the File class, but nothing seems to change. Does anyone have some insight on how this might be fixed? Here is the rest of my code: https://github.com/Sam54123/mc-animation/



EDIT



Okay, I've just done some more debugging, and it looks like it's the



return new JSONObject(string);


on line 47 of the second file that's crashing. No idea why, as the risky stuff of reading a file off disk is okay.



EDIT 2
It looks looks like it's failing because



InputStream in = FileHandle.inputStreamFromFile(path);


is returning null, which makes sense because of the try catch statement



InputStream inputStream = FileHandle.class.getResourceAsStream(path);


is in. Why that's failing beats me though, because the validity of the file is verified elsewhere in the code. It also used to work, and I haven't changed anything about the layout of the files.



EDIT 3
Interesting, a couple System.out.printlns reveal the catch is not actually getting activated, and therefore getResourceAsStream() must actually be returning null. I've confirmed this by printing it out before I return it.










share|improve this question
















So, I'm working on a program that allows you to import animations in the form of JSON files into Minecraft, and, when working on a completely different part of the program, my import code stopped working.



I'm using eclipse, and this is how my import code looks:



package com.github.sam54123.mc_animation.utils;

import java.io.InputStream;

public class FileHandle
{
public static InputStream inputStreamFromFile(String path)
{
try
{
InputStream inputStream = FileHandle.class.getResourceAsStream(path);
return inputStream;
}
catch(Exception e)
{
e.printStackTrace();
}

return null;

}
}


new file



package com.github.sam54123.mc_animation.utils;

import java.io.File;
import java.io.InputStream;
import java.util.Scanner;

import org.json.JSONObject;

public class JSONUtils
{
public static String getJSONStringFromFile(String path)
{
// Open file
Scanner scanner;
try
{
InputStream in = FileHandle.inputStreamFromFile(path);
scanner = new Scanner(in);
// Get JSON as string without spaces or newlines
String json = scanner.useDelimiter("\Z").next();

// Close file
scanner.close();

return json;

}
catch(Exception e)
{
System.out.println(e.getStackTrace());
return null;
}


}

public static JSONObject getJSONObjectFromFile(String path)
{
File file = new File(path);
if (!file.exists())
{
System.out.println("Invalid Path");
return null;
}

String string = getJSONStringFromFile(path);
return new JSONObject(string);

}



}


And I proceed to do some more fancy pampering of the file later on. This used to work reliably, until I made this in a completely different and un-related class:



String command = getCommand(object);

if (command != null && command.length() > 0)
{
commands.add(new AnimCommand(command, i));
}


And then it started throwing this error:



   [Ljava.lang.StackTraceElement;@7852e922
Exception in thread "main" java.lang.NullPointerException
at java.io.StringReader.<init>(Unknown Source)
at org.json.JSONTokener.<init>(JSONTokener.java:94)
at org.json.JSONObject.<init>(JSONObject.java:406)
at com.github.sam54123.mc_animation.utils.JSONUtils.getJSONObjectFromFile(JSONUtils.java:47)
at com.github.sam54123.mc_animation.system.Animation.<init>(Animation.java:20)
at com.github.sam54123.mc_animation.testing.Tester.main(Tester.java:13)


I've double checked that the file hasn't changed, and I tried deleting that section of code, restarting Eclipse, the whole deal, and nothing seems to fix it. The code is even able to recognize that the file is valid using the File class, but nothing seems to change. Does anyone have some insight on how this might be fixed? Here is the rest of my code: https://github.com/Sam54123/mc-animation/



EDIT



Okay, I've just done some more debugging, and it looks like it's the



return new JSONObject(string);


on line 47 of the second file that's crashing. No idea why, as the risky stuff of reading a file off disk is okay.



EDIT 2
It looks looks like it's failing because



InputStream in = FileHandle.inputStreamFromFile(path);


is returning null, which makes sense because of the try catch statement



InputStream inputStream = FileHandle.class.getResourceAsStream(path);


is in. Why that's failing beats me though, because the validity of the file is verified elsewhere in the code. It also used to work, and I haven't changed anything about the layout of the files.



EDIT 3
Interesting, a couple System.out.printlns reveal the catch is not actually getting activated, and therefore getResourceAsStream() must actually be returning null. I've confirmed this by printing it out before I return it.







java eclipse file inputstream






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 24 '18 at 7:30







Sam54123

















asked Nov 24 '18 at 6:54









Sam54123Sam54123

61




61








  • 1





    Can you point out the line number where the NPE is taking place?

    – Nicholas K
    Nov 24 '18 at 6:56











  • You're calling getJSONStringFromFile twice, with the first call's output fed into the second. Is this really what you intended to do? If the first call actually returns JSON, how can you read it as a file?

    – Vasan
    Nov 24 '18 at 7:01











  • saw that and fixed. That was a debugging step I attempted to take and failed though. Bug still exists.

    – Sam54123
    Nov 24 '18 at 7:12











  • Is string null?

    – Nicholas K
    Nov 24 '18 at 7:15











  • Just looked and put it in Edit 2, with a batch of new info

    – Sam54123
    Nov 24 '18 at 7:20














  • 1





    Can you point out the line number where the NPE is taking place?

    – Nicholas K
    Nov 24 '18 at 6:56











  • You're calling getJSONStringFromFile twice, with the first call's output fed into the second. Is this really what you intended to do? If the first call actually returns JSON, how can you read it as a file?

    – Vasan
    Nov 24 '18 at 7:01











  • saw that and fixed. That was a debugging step I attempted to take and failed though. Bug still exists.

    – Sam54123
    Nov 24 '18 at 7:12











  • Is string null?

    – Nicholas K
    Nov 24 '18 at 7:15











  • Just looked and put it in Edit 2, with a batch of new info

    – Sam54123
    Nov 24 '18 at 7:20








1




1





Can you point out the line number where the NPE is taking place?

– Nicholas K
Nov 24 '18 at 6:56





Can you point out the line number where the NPE is taking place?

– Nicholas K
Nov 24 '18 at 6:56













You're calling getJSONStringFromFile twice, with the first call's output fed into the second. Is this really what you intended to do? If the first call actually returns JSON, how can you read it as a file?

– Vasan
Nov 24 '18 at 7:01





You're calling getJSONStringFromFile twice, with the first call's output fed into the second. Is this really what you intended to do? If the first call actually returns JSON, how can you read it as a file?

– Vasan
Nov 24 '18 at 7:01













saw that and fixed. That was a debugging step I attempted to take and failed though. Bug still exists.

– Sam54123
Nov 24 '18 at 7:12





saw that and fixed. That was a debugging step I attempted to take and failed though. Bug still exists.

– Sam54123
Nov 24 '18 at 7:12













Is string null?

– Nicholas K
Nov 24 '18 at 7:15





Is string null?

– Nicholas K
Nov 24 '18 at 7:15













Just looked and put it in Edit 2, with a batch of new info

– Sam54123
Nov 24 '18 at 7:20





Just looked and put it in Edit 2, with a batch of new info

– Sam54123
Nov 24 '18 at 7:20












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53455899%2fjava-seemingly-randomly-started-crashing-on-filehandle-class-getresourceasstre%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53455899%2fjava-seemingly-randomly-started-crashing-on-filehandle-class-getresourceasstre%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Basket-ball féminin

Different font size/position of beamer's navigation symbols template's content depending on regular/plain...

I want to find a topological embedding $f : X rightarrow Y$ and $g: Y rightarrow X$, yet $X$ is not...