GeeCON Prague 2014*
The moose likes Beginning Java and the fly likes java.lang.NullPointerException error Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Java » Beginning Java
Bookmark "java.lang.NullPointerException error" Watch "java.lang.NullPointerException error" New topic
Author

java.lang.NullPointerException error

anitha vani
Greenhorn

Joined: Jun 08, 2009
Posts: 6
I'm hoping this is the right place for posting my question. This is the error I'm getting in my code...
jani@ani-desktop:~/Desktop/FINAL-UTILITIES$ java retrievalGabor single-image/0000.jpg single-image-gabor-query.txt featdb.txt gabdb.txt 1 gaGabor-output.txt qt
1
gaGabor-output.txt
im here
java.lang.NullPointerException
at retrievalGabor.main(retrievalGabor.java:90)


java code here
//The alignment of the features is assumed to be AVG, VAR, CSD, GABOR

import java.io.*;
import javax.imageio.*;
import java.awt.*;
import java.awt.image.*;

class retrievalGabor
{
public static void main(String args[])
{
if(args.length!=6 && args.length!=7)
{
System.out.println("The parameters are {Query Image} {Query Gabor file} {Features File} {Gabor Text File} [blocks] {Relevant Features} {EPS directory}");
System.exit(0);
}

int BLOCKS=1, FEATURES=15, SCALE=3, ORIENTATION=4;
BufferedImage bi, bi1;
GraphicsEnvironment ge= GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd=ge.getDefaultScreenDevice();
GraphicsConfiguration gc=gd.getDefaultConfiguration();
Graphics2D g2D=null;
ColorModel cm=null;
DataInputStream dis, dis1;
BufferedReader br, br1;

float features[][], diff[], query[], tmp=0;
String names[], tmps=null, tokens[];
int images=0, bitcount=0;
char ch;

try{
bi=ImageIO.read(new File(args[0]));
bi1=gc.createCompatibleImage(bi.getWidth(null), bi.getHeight(null));
g2D=bi1.createGraphics();
g2D.drawImage(bi, null, 0, 0);
bi=bi1;

dis=new DataInputStream(new FileInputStream(args[2]));//opening the features file
br=new BufferedReader(new FileReader(args[3]));//opening the texture features file

if(args.length==7)
{
System.out.println(args[4]);
BLOCKS=Integer.parseInt(args[4]);

System.out.println(args[5]);
dis1=new DataInputStream(new FileInputStream(args[5]));//opening the relevant features file
System.out.println("im here");
}
else
dis1=new DataInputStream(new FileInputStream(args[4]));//opening the relevant features file


//query=myFinalToolkit.computeColorSampleImage(bi, BLOCKS, SCALE*ORIENTATION);
//query= new float[126];

float [] qry = {0.1544465f ,0.54298925f ,0.73340774f ,0.017640665f ,0.085013896f ,0.095653236f ,0.0f,0.4047619f ,0.36394557f ,0.21768707f ,0.09863946f ,0.088435374f ,0.08163265f ,0.06462585f ,0.05782313f ,0.27210885f ,0.26870748f ,0.10204082f ,0.0f ,0.010204081f ,0.0034013605f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.023809524f ,0.010204081f ,0.0f ,0.0f ,0.17687075f ,0.32312927f ,0.0f ,0.0f ,0.09863946f ,0.6632653f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.013605442f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.08163265f ,0.0f ,0.0f ,0.0f ,0.49659863f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.010204081f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f ,0.0f};

// float [] query = {0.1544465f ,0.54298925f ,0.73340774f ,0.017640665f ,0.085013896f ,0.095653236f ,0.0f} ;
// ,0.4047619 ,0.36394557 ,0.21768707 ,0.09863946 ,0.088435374 ,0.08163265 ,0.06462585 ,0.05782313 ,0.27210885 ,0.26870748 ,0.10204082 ,0.0 ,0.010204081 ,0.0034013605 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.023809524 ,0.010204081 ,0.0 ,0.0 ,0.17687075 ,0.32312927 ,0.0 ,0.0 ,0.09863946 ,0.6632653 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.013605442 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.08163265 ,0.0 ,0.0 ,0.0 ,0.49659863 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.010204081 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0};
//
query = new float[150];
for (int i=1;i<126; i++){
query[i] = qry[i];
}

br1=new BufferedReader(new FileReader(args[1]));//opening the Query texture file
tokens=(br1.readLine()).split(" ");
for(int i=3;i<2*BLOCKS*SCALE*ORIENTATION;i++)
query[BLOCKS*6+120+i-3]=Float.parseFloat(tokens[i]);
br1.close();

//reading the features file
images=dis.readInt();
features=new float[images][BLOCKS*(6+SCALE*ORIENTATION*2)+120];
names=new String[images];

for(int i=0;i<images;i++)
{
names[i]=new String();
while((ch=dis.readChar())!='\n')
names[i]+=ch;

for(int j=0; j<BLOCKS*6+120;j++)
features[i][j]=dis.readFloat();
dis.readChar();

tokens=(br.readLine()).split(" ");
for(int j=3;j<BLOCKS*2*SCALE*ORIENTATION;j++)
features[i][BLOCKS*6+120+j-3]=Float.parseFloat(tokens[j]);
}
dis.close();
br.close();

int [] wt = { 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1 } ;
//reading the feature relevancy
/* wt=new int[BLOCKS*(FEATURES-1)+1];
for(int i=0;i<BLOCKS*(FEATURES-1)+1;i++)
{
wt[i] = 1;
// wt[i]=dis1.readInt();
// System.out.println(i+ " " + dis1.readInt());
// System.out.print(wt[i]+" ");
}
System.out.println();
dis1.close();
*/
diff=new float[images];
for(int i=0;i<images;i++)
{
//average and variance in color
for(int j=0;j<BLOCKS;j++)
{
for(int k=0;k<2;k++)
{
tmp=0;
if(wt[j*(FEATURES-1)+k]==1)
{
for(int l=0;l<3;l++)
tmp+=Math.abs(query[j*6+k*3+l]-features[i][j*6+k*3+l]);

diff[i]+=tmp/3;
}
}
}

//CSD
tmp=0;
if(wt[BLOCKS*(FEATURES-1)]==1)
{
for(int k=0;k<120;k++)
tmp+=Math.abs(query[BLOCKS*6+k]-features[i][BLOCKS*6+k]);

diff[i]+=tmp/120;
}

//texture features
for(int j=0;j<BLOCKS;j++)
for(int k=0;k<SCALE*ORIENTATION;k++)
{
tmp=0;
if(wt[j*(FEATURES-1)+2+k]==1)
for(int l=0;l<2;l++)
{
tmp+=Math.abs(query[BLOCKS*6+120+j*SCALE*ORIENTATION+2*k+l]-features[i][BLOCKS*6+120+j*SCALE*ORIENTATION+2*k+l]);
}
diff[i]+=tmp/2;
}

}


//sort the entries in the sorted order
for(int i=0;i<images-1;i++)
for(int j=0;j<images-i-1;j++)
{
if(diff[j+1]<diff[j])
{
tmp=diff[j];
diff[j]=diff[j+1];
diff[j+1]=tmp;

tmps=names[j];
names[j]=names[j+1];
names[j+1]=tmps;

tmps=null;
}
}

/* //sort the entries in the sorted order by name
for(int i=0;i<29;i++)
for(int j=0;j<29-i;j++)
{
if(names[j].compareTo(names[j+1])>0)
{
tmp=diff[j];
diff[j]=diff[j+1];
diff[j+1]=tmp;

tmps=names[j];
names[j]=names[j+1];
names[j+1]=tmps;

tmps=null;
}
}
*/

Runtime rt=Runtime.getRuntime();
String arr[]=new String[3], dir[]=new String[2];

dir[0]=new String("/bin/mkdir");
if(args.length==6)
// dir[1]=new String("/tmp/"+args[5]+args[0].substring(args[0].lastIndexOf('/')+1, args[0].lastIndexOf('.')));
dir[1] = new String("/home/sushanth/Desktop/myUtilities/NEW-UTILITIES/outputfiles");

else
dir[1] = new String("/home/sushanth/Desktop/myUtilities/NEW-UTILITIES/outputfiles");


// dir[1]=new String("/tmp/"+args[6]+args[0].substring(args[0].lastIndexOf('/')+1, args[0].lastIndexOf('.')));
// System.out.println(dir[1]);
rt.exec(dir);

arr[0]=new String("/bin/cp");
for(int i=0;i<5;i++) {
System.out.println(names[i]+" "+diff[i]);
arr[1]=new String("../class_one/"+args[0].substring(0,args[0].lastIndexOf("/")+1)+names[i]);

if(i<10)
arr[2]=new String(dir[1]+"/0"+i+".jpg");
else
arr[2]=new String(dir[1]+"/"+i+".jpg");
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);

rt.exec(arr);
}

}
catch(Exception e)
{
e.printStackTrace();
System.exit(0);
}
}
}
Venkata Kumar
Ranch Hand

Joined: Apr 16, 2008
Posts: 110

please use the code tags to post your code.


SCJP 5.0, SCWCD 5, preparing for SCDJWS
anitha vani
Greenhorn

Joined: Jun 08, 2009
Posts: 6
I am novice and also new member to this community can you please tell me how to keep code tags here?
David Newton
Author
Rancher

Joined: Sep 29, 2008
Posts: 12617

anitha vani wrote:I am novice and also new member to this community can you please tell me how to keep code tags here?

UseCodeTags
anitha vani
Greenhorn

Joined: Jun 08, 2009
Posts: 6
the following is the error :
ani@ani-desktop:~/Desktop/FINAL-UTILITIES$ java retrievalGabor single-image/0000.jpg single-image-gabor-query.txt featdb.txt gabdb.txt 1 gaGabor-output.txt qt
1
gaGabor-output.txt
im here
java.lang.NullPointerException
at retrievalGabor.main(retrievalGabor.java:90)

java code here:
/The alignment of the features is assumed to be AVG, VAR, CSD, GABOR
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 18874
    
  40

The first step is here....

java.lang.NullPointerException
at retrievalGabor.main(retrievalGabor.java:90)


In the main() method of the retrievalGabor class at line 90 of the retrievalGabor.java file is the offending line. Add a few debugging messages of the variables used in the line to find the null pointer.

Henry


Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
David Newton
Author
Rancher

Joined: Sep 29, 2008
Posts: 12617

That's still essentially illegible. Consider (a) indenting your code, (b) splitting long lines so we don't have to right-scroll a few screens, and (c) writing a method or two.

Is the NPE coming from the readline().split(" ") call?
David Sharpe
Ranch Hand

Joined: Jun 15, 2009
Posts: 32
According to the API, java.io.BufferedReader.readLine() will return null if the end of the stream has been reached, in which case tokens=(br.readLine()).split(" "); would throw an NPE since you can't call split a null.

In addition to David Newton's formatting concerns, I'm worried that 230 lines of code have been written without individually testing any of it. A beginner should write 5 lines of code, test it thoroughly, and then write 5 more (use methods). I'm sorry if I'm wrong and that's exactly what you've done, but that's not how it looks.
W. Joe Smith
Ranch Hand

Joined: Feb 10, 2009
Posts: 710
David Sharpe wrote:According to the API, java.io.BufferedReader.readLine() will return null if the end of the stream has been reached, in which case tokens=(br.readLine()).split(" "); would throw an NPE since you can't call split a null.

In addition to David Newton's formatting concerns, I'm worried that 230 lines of code have been written without individually testing any of it. A beginner should write 5 lines of code, test it thoroughly, and then write 5 more (use methods). I'm sorry if I'm wrong and that's exactly what you've done, but that's not how it looks.


I would argue that EVERYONE should test like that, not just beginners.


SCJA
When I die, I want people to look at me and say "Yeah, he might have been crazy, but that was one zarkin frood that knew where his towel was."
 
GeeCON Prague 2014
 
subject: java.lang.NullPointerException error