C:\j2sdk1.4.2\bin>java -jar Calendar.jar
Exception in thread "main" java.lang.NullPointerExcep
tion
at java.util.StringTokenizer.
<init>(Str
ingTokeniz
er.java:14
6)
at java.util.StringTokenizer.
<init>(Str
ingTokeniz
er.java:16
2)
at hw2.labarbera.CalendarApp.
parseDate(
CalendarAp
p.java:130
)
at hw2.labarbera.CalendarApp.
start(Cale
ndarApp.ja
va:85)
at hw2.labarbera.CalendarApp.
main(Calen
darApp.jav
a:410)
I'm getting this error when i try to create a jar file on my class. Let me explain a few things about this class. It's an applet that prints data from two text files onto the applet. It also has a main so it displays as an application. In textpoad i can run as application just fine. The same goes for in the browser.
it's in a packge hw2.labarbera
I have a manifest.......
Manifest-Version: 1.0
Main-Class: hw2.labarbera.CalendarApp
Created-By: Steve
every .class is in hw2/labarbera directory.
but when i try to execute the jar file i get this error
C:\j2sdk1.4.2\bin>java -jar Calendar.jar
Exception in thread "main" java.lang.NullPointerExcep
tion
at java.util.StringTokenizer.
<init>(Str
ingTokeniz
er.java:14
6)
at java.util.StringTokenizer.
<init>(Str
ingTokeniz
er.java:16
2)
at hw2.labarbera.CalendarApp.
parseDate(
CalendarAp
p.java:130
)
at hw2.labarbera.CalendarApp.
start(Cale
ndarApp.ja
va:85)
at hw2.labarbera.CalendarApp.
main(Calen
darApp.jav
a:410)
Any ideas why? do i need to jar the two text files as well or something? any help would be much appreciated!
==========================
====
package hw2.labarbera;
import java.awt.event.*;
import java.util.StringTokenizer;
import java.awt.*;
import java.applet.*;
import java.io.*;
import javax.swing.*;
import java.awt.Graphics2D;
import java.util.ArrayList;
public class CalendarApp extends Applet implements ActionListener
{
String preferences[] = new String[3]; // holds view,fontsize,andshow type
ArrayList dates;
int fontsize=0;
String view;
String targetDate;
String day;
String month;
String year;
private Dimension area; //indicates area taken up by graphics
//=======Buttons==========
==========
===
Button button_month;
Button button_week;
Button button_day ;
JPanel pnlDrawing;
//Fonts===================
==========
=
Font f;
Font f2;
/**
init creates gui and adds listeners
*/
public void init()
{
area = new Dimension(300,1200);
JPanel pnlBase = new JPanel();
pnlBase.setLayout(new BorderLayout());
pnlDrawing = new DrawingPanel();
pnlDrawing.setBackground(C
olor.white
);
JPanel buttons = new JPanel();
buttons.setLayout(new FlowLayout());
button_day = new Button("Show Day");
button_week = new Button("Show Week");
button_month = new Button("Show Month");
buttons.add(button_day);
buttons.add(button_week);
buttons.add(button_month);
pnlBase.add(buttons,Border
Layout.NOR
TH);
this.setLayout(new BorderLayout());
JScrollPane sp = new JScrollPane(pnlDrawing);
pnlBase.add(sp,BorderLayou
t.CENTER);
this.add(pnlBase,BorderLay
out.CENTER
);
button_day.addActionListen
er(this);
button_week.addActionListe
ner(this);
button_month.addActionList
ener(this)
;
f=new Font("Arial",Font.BOLD,18)
;
f2=new Font("Arial",Font.BOLD,14)
;
}
/**
start calls 3 methods that perform the calendar actions
*/
public void start()
{
getPreferences();
parseDate();
loadDates();
}
/**
Performs the actions when one of the buttons is clicked
*/
public void actionPerformed( ActionEvent evt)
{
Object action = evt.getSource();
if(action == button_month)
{
getMonth(targetDate);
pnlDrawing.setPreferredSiz
e(area);
pnlDrawing.revalidate();
pnlDrawing.repaint();
}
else if(action == button_week)
{
getWeek(targetDate);
pnlDrawing.revalidate();
pnlDrawing.repaint();
}
else if(action == button_day)
{
getDay(targetDate);
pnlDrawing.revalidate();
pnlDrawing.repaint();
}
}
/**
Parses date 09/30/05 to 09 30 05 into appropriate variable
*/
private void parseDate()
{
StringTokenizer tokens = new StringTokenizer(targetDate
,"//");
String[] s = new String[3];
int i=0;
while(tokens.hasMoreTokens
() )
{
s[i] = tokens.nextToken();
i++;
}
//learn how to do with split intsead of stringtokenizer
month = s[0];
day = s[1];
year = s[2];
}
/**
Depending on what was read from the preferences file it will display
*/
private void loadDates()
{
if( view.equals("day"))
{
getDay(targetDate);
}
else if(view.equals("week"))
{
getWeek(targetDate);
}
else if(view.equals("month"))
{
getMonth(targetDate);
}
}
/**
Loads 7 days from current day into ArrayList dates to display
*/
public void getWeek(String targetDate)
{
InputStream R = getClass().getResourceAsSt
ream("Sche
duledDates
");
if(R == null)
{
}
else
{
try
{
String todo;
String line = null;
int count=0;
dates = new ArrayList();
BufferedReader br = new BufferedReader(new InputStreamReader(R));
boolean catching = false ;
while ((line = br.readLine()) != null)
{
if(line.equals(targetDate)
)
{
catching = true ;
}
if (catching)
{
if (line.equals(""))
{
count++;
}
dates.add(line); //add the line to arraylist until line is |
}
if(count == 7)
return;
}
}
catch(IOException e)
{System.out.println("error
");
}
}
}
/**
Loads current day into ArrayList dates to display
*/
public void getDay(String targetDate)
{
InputStream R = getClass().getResourceAsSt
ream("Sche
duledDates
");
if(R == null)
{
// g.drawString("R is null",0,0);
}
else
{
try
{
String todo;
String line = null;
dates = new ArrayList();
BufferedReader br = new BufferedReader(new InputStreamReader(R));
boolean catching = false ;
while ((line = br.readLine()) != null)
{
if(line.equals(targetDate)
)
{ catching = true ; }
if (catching)
{
if (line.equals(""))
{
return;
}
dates.add(line); //add the line to arraylist until line is |
}
}
}
catch(IOException e)
{System.out.println("error
");
}
}
}
/**
Loads current month into ArrayList dates to display
*/
private void getMonth(String targetDate)
{
InputStream R = getClass().getResourceAsSt
ream("Sche
duledDates
");
if(R == null)
{
// g.drawString("R is null",0,0);
}
else
{
try
{
String todo;
String line = null;
dates = new ArrayList();
BufferedReader br = new BufferedReader(new InputStreamReader(R));
boolean catching = false ;
while ((line = br.readLine()) != null)
{
if(line.equals(targetDate)
)
{ catching = true ; }
if (catching)
{
if (line.equals("|"))
{
return;
}
dates.add(line); //add the line to arraylist until line is |
}
}
}
catch(IOException e)
{System.out.println("error
");
}
}
}
/**
Loads prefferences into variables
fontsize
view
current date
*/
public void getPreferences()
{
InputStream file = getClass().getResourceAsSt
ream("Pref
erences");
if(file == null){
}
else
{
try
{
String line = null;
BufferedReader in = new BufferedReader(new InputStreamReader(file));
line = in.readLine();
StringTokenizer token = new StringTokenizer(line, "|");
int i=0;
while(token.hasMoreTokens(
))
{
preferences[i] = token.nextToken();
i++;
}
String stringfont = preferences[2];
fontsize = Integer.parseInt(stringfon
t);
view = preferences[1];
targetDate = preferences[0];
}
catch(IOException e)
{System.out.println("error
");
}
}
}
/**
The drawing surface pasted onto the scrollbar
*/
class DrawingPanel extends JPanel
{
public void paint(Graphics g)
{
//need to clear screen
g.setColor(Color.white);
g.fillRect(0,0,getWidth(),
getHeight(
));
g.setColor(Color.black);
g.setFont(f);
g.drawString("Calendar Appointments",30,50);
g.setFont(f2);
int x=30;
int y=70;
for(int i=0; i < dates.size();i++)
{
g.drawString((String) dates.get(i),x,y);
y+=10;
}
area.height = y +10;
area.width = 300;
pnlDrawing.setPreferredSiz
e(area);
pnlDrawing.revalidate();
}
}
public static void main(String args[])
{
CalendarApp calendar = new CalendarApp();
calendar.init();
calendar.start();
JFrame frame = new JFrame("Calendar");
Container pane = frame.getContentPane();
pane.add(calendar);
frame.setSize(600,800);
frame.show();
}
}