Search code examples
javatinkerpop3blazegraph

IOException Loading Data into BlazegraphEmbedded


I'm having an issue loading my Blazegraph properties file into an embedded instance. When I try to import my .properties file into my Java class, I get the following error:

Exception in thread "main" java.io.IOException: Stream closed
at java.io.BufferedInputStream.getInIfOpen(Unknown Source)
at java.io.BufferedInputStream.read1(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.Reader.read(Unknown Source)
at java.util.Properties$LineReader.readLine(Unknown Source)
at java.util.Properties.load0(Unknown Source)
at java.util.Properties.load(Unknown Source)
at blazegraph_tinkerpop_tryout.blazegraph_data_load.loadProperties(blazegraph_data_load.java:55)
at blazegraph_tinkerpop_tryout.blazegraph_data_load.main(blazegraph_data_load.java:32)

Call to loadProperties function from main:

Properties props = loadProperties("sampleprops.properties");

My loadProperties function (checking to see whether file path is valid, then sending to reader):

public static Properties loadProperties(String resource) throws IOException 
{
    Properties p = new Properties();
    Path path = Paths.get(resource);
    Boolean bool = Files.exists(path);
    if (bool)
    {
        System.out.println("File was found. Attempting data load...");
        InputStream is = blazegraph_data_load.class.getResourceAsStream(resource);
        p.load(new InputStreamReader(new BufferedInputStream(is)));
        return p;
    }
    System.out.println("The file you entered was not found.");
    return null;
}

Here is what my file sampleprops.properties looks like:

com.bigdata.journal.AbstractJournal.bufferMode=DiskRW
com.bigdata.journal.AbstractJournal.file=blazegraph.jnl

I have been following the setup instructions from the sample Blazegraph app described here. If it makes a difference, I am using the Blazegraph/Tinkerpop3 implementation found here.


Solution

  • I found a workaround: I switched my getResourceAsStream method to a FileInputStream method.

    The problem was with the placement of my properties file. The FileInputStream method seems more forgiving in where you place the file.