This is the mail archive of the
java-discuss@sourceware.cygnus.com
mailing list for the Java project.
Re: NullPointer + Jars
- To: gcj Discussion List <java-discuss at sourceware dot cygnus dot com>
- Subject: Re: NullPointer + Jars
- From: "Gregory R. Warnes" <warnes at biostat dot washington dot edu>
- Date: Fri, 19 May 2000 01:59:20 +0000 (GMT)
Oh, I forgot to mention that when the classpath is empty, I get the same
error.
-Greg
On Fri, 19 May 2000, Gregory R. Warnes wrote:
GRW>>
GRW>> The example program "HelloDate.java" is attached, as is the getopt jar
GRW>> file.
GRW>>
GRW>> 1) My code uses the gnu getopt code for java. When the jar file is in the
GRW>> classpath, the program throws a NullPointerException on startup (see
GRW>> below). When the un-jar-ed data is on the classpath, everything runs
GRW>> correctly.
GRW>>
GRW>> 2) No matter how the classpath is set, I always get this error when I run
GRW>> under gdb. Any ideas?
GRW>>
GRW>> -Greg
GRW>>
GRW>> ------------Build Configuration
GRW>>
GRW>> gcc 2.95.2 with Bryce's patches
GRW>> latest CVS sources (with my java.lang.Vector, java.lang.Double,
GRW>> and __build_expect patches, which shouldn't make any difference )
GRW>>
GRW>> gcc configuration:
GRW>>
GRW>> ../gcc-2.95.2/configure --prefix=/usr --disable-threads
GRW>>
GRW>> libgcj configuration:
GRW>>
GRW>> ../libgcj/configure --prefix=/usr --disable-threads --norecursion
GRW>>
GRW>>
GRW>> ------------Makefile
GRW>>
GRW>> CLASSPATH=${HOME}/java/
GRW>>
GRW>> FILES= ${HOME}/java/gnu/getopt/Getopt.class \
GRW>> ${HOME}/java/gnu/getopt/LongOpt.class \
GRW>> HelloDate.class \
GRW>>
GRW>> compile:
GRW>> gcj -o HelloDate --main=HelloDate ${FILES}
GRW>>
GRW>> run:
GRW>> ./HelloDate -h
GRW>>
GRW>> ------------HelloDate.java
GRW>> import java.util.Date;
GRW>> import gnu.getopt.Getopt;
GRW>> import gnu.getopt.LongOpt;
GRW>>
GRW>> public class HelloDate
GRW>> {
GRW>>
GRW>> public static void main( String[] argv )
GRW>> {
GRW>> int c;
GRW>> LongOpt[] longopts = new LongOpt[1];
GRW>> String optString = "";
GRW>>
GRW>> longopts[0] = new LongOpt("help", LongOpt.NO_ARGUMENT, null,
GRW>> 'h'); optS
GRW>> tring += "h";
GRW>>
GRW>> //
GRW>> Getopt g = new Getopt("Simulate", argv, optString, longopts);
GRW>> //
GRW>> while ((c = g.getopt()) != -1)
GRW>> switch (c)
GRW>> {
GRW>> case 'h':
GRW>> System.err.println("You asked for help. We have
GRW>> none.");
GRW>> break;
GRW>> }
GRW>>
GRW>> Date date = new Date();
GRW>> System.err.println( "Hello World, Today is " + date );
GRW>>
GRW>> }
GRW>>
GRW>> }
GRW>>
GRW>>
GRW>> ------------Transcript
GRW>>
GRW>> ### classpath includes jar ###
GRW>>
GRW>> hydra:/tmp/gcj> export CLASSPATH=/home/warnes/java/java-getopt-1.0.7.jar
GRW>> hydra:/tmp/gcj> ./HelloDate
GRW>> java.lang.NullPointerException
GRW>> at 0x400ae886: _init (/usr/lib/libgcj.so.1)
GRW>> at 0x400f6d4c: java::lang::String::length(void) (/usr/lib/libgcj.so.1)
GRW>> at
GRW>> 0x40149489: java::util::zip::ZipFile::getInputStream(java::util::zip::ZipEntry
GRW>> *) (/usr/lib/libgcj.so.1)
GRW>> at
GRW>> 0x40116e1f: java::net::URLClassLoader::getResourceAsStream(java::lang::String
GRW>> *) (/usr/lib/libgcj.so.1)
GRW>> at
GRW>> 0x400ef749: java::lang::ClassLoader::getSystemResourceAsStream(java::lang::String
GRW>> *) (/usr/lib/libgcj.so.1)
GRW>> at
GRW>> 0x4013f46f: java::util::ResourceBundle::trySomeGetBundle(java::lang::String
GRW>> *, java::lang::String *) (/usr/lib/libgcj.so.1)
GRW>> at
GRW>> 0x4013f924: java::util::ResourceBundle::partialGetBundle(java::lang::String
GRW>> *, java::util::Locale *, bool) (/usr/lib/libgcj.so.1)
GRW>> at 0x4013fae3: java::util::ResourceBundle::getBundle(java::lang::String
GRW>> *, java::util::Locale *) (/usr/lib/libgcj.so.1)
GRW>> at 0x0804eb3b: gnu::getopt::LongOpt::LongOpt(java::lang::String *, int,
GRW>> java::lang::StringBuffer *,
GRW>> int) (/home/warnes/java/gnu/getopt/LongOpt.class:0)
GRW>> at 0x0804edc7: HelloDate::main(JArray<java::lang::String *>
GRW>> *) (/tmp/gcj/HelloDate.class:0)
GRW>> at
GRW>> 0x4014deb5: gnu::gcj::runtime::FirstThread::run(void) (/usr/lib/libgcj.so.1)
GRW>> at 0x40158a1b: java::lang::Thread::run_(java::lang::Object
GRW>> *) (/usr/lib/libgcj.so.1)
GRW>> at 0x40168e6e: _Jv_ThreadStart(java::lang::Thread *, int *, void
GRW>> (*)(java::lang::Thread *)) (/usr/lib/libgcj.so.1)
GRW>> at 0x40158b50: java::lang::Thread::start(void) (/usr/lib/libgcj.so.1)
GRW>> at 0x400afd8c: JvRunMain (/usr/lib/libgcj.so.1)
GRW>> at 0x0804f091: main (/tmp/ccopDtocmain.i:0)
GRW>> at 0x4028ba42: __libc_start_main (/lib/libc.so.6)
GRW>> at 0x08049b11: _start (??:0)
GRW>>
GRW>> ### classpath includes "raw" class files ###
GRW>>
GRW>> hydra:/tmp/gcj> export CLASSPATH=/home/warnes/java # contains gnu/getopt/*
GRW>> hydra:/tmp/gcj> ./HelloDate
GRW>> Hello World, Today is Fri May 19 00:53:12 GMT 2000
GRW>>
GRW>> ### run under gdb, classpath includes "raw" class files ###
GRW>>
GRW>> hydra:/tmp/gcj> gdb ./HelloDate
GRW>> GNU gdb 19990928
GRW>> Copyright 1998 Free Software Foundation, Inc.
GRW>> GDB is free software, covered by the GNU General Public License, and you
GRW>> are
GRW>> welcome to change it and/or distribute copies of it under certain
GRW>> conditions.
GRW>> Type "show copying" to see the conditions.
GRW>> There is absolutely no warranty for GDB. Type "show warranty" for
GRW>> details.
GRW>> This GDB was configured as "i686-pc-linux-gnu"...
GRW>> (gdb) show env CLASSPATH
GRW>> CLASSPATH = /home/warnes/java
GRW>> (gdb) run
GRW>> Starting program: /tmp/gcj/./HelloDate
GRW>>
GRW>> Program received signal SIGSEGV, Segmentation fault.
GRW>> 0x400f6d4a in java.lang.String.length (this=null)
GRW>> at ../../../libgcj/libjava/java/lang/String.java:131
GRW>> 131 return count;
GRW>> Current language: auto; currently java
GRW>> (gdb) backtrace
GRW>> #0 0x400f6d4a in java.lang.String.length (this=null)
GRW>> at ../../../libgcj/libjava/java/lang/String.java:131
GRW>> #1 0x40149489 in java.util.zip.ZipFile.getInputStream (this=@80ceea0,
GRW>> ze=@80dad70) at ../../../libgcj/libjava/java/util/zip/ZipFile.java:130
GRW>> #2 0x40116e1f in java.net.URLClassLoader.getResourceAsStream
GRW>> (this=@806d348,
GRW>> name=@80d7060) at
GRW>> ../../../libgcj/libjava/java/net/URLClassLoader.java:163
GRW>> #3 0x400ef749 in java.lang.ClassLoader.getSystemResourceAsStream (
GRW>> name=@80d7060) at
GRW>> ../../../libgcj/libjava/java/lang/ClassLoader.java:335
GRW>> #4 0x4013f46f in java.util.ResourceBundle.trySomeGetBundle (
GRW>> bundleName=@80d7360, stopHere=@806d3a8)
GRW>> at ../../../libgcj/libjava/java/util/ResourceBundle.java:201
GRW>> #5 0x4013f924 in java.util.ResourceBundle.partialGetBundle (
GRW>> baseName=@806bf00, locale=@806d498, langStop=false)
GRW>> at ../../../libgcj/libjava/java/util/ResourceBundle.java:164
GRW>> #6 0x4013fae3 in java.util.ResourceBundle.getBundle (baseName=@806bf00,
GRW>> locale=@806d498)
GRW>> at ../../../libgcj/libjava/java/util/ResourceBundle.java:181
GRW>> #7 0x804eb3b in gnu.getopt.LongOpt.LongOpt ()
GRW>> #8 0x804edc7 in HelloDate.main ()
GRW>> #9 0x4014deb5 in gnu::gcj::runtime::FirstThread::run (this=@806aea0)
GRW>> at ../../../libgcj/libjava/gnu/gcj/runtime/natFirstThread.cc:146
GRW>> #10 0x40158a1b in java::lang::Thread::run_ (obj=@806aea0)
GRW>> at ../../../libgcj/libjava/java/lang/natThread.cc:263
GRW>> #11 0x40168e6e in _Jv_ThreadStart (thread=@806aea0,
GRW>> meth=0x40158850 <java::lang::Thread::run_(java::lang::Object *)>)
GRW>> at ../../../libgcj/libjava/no-threads.cc:28
GRW>> #12 0x40158b50 in java::lang::Thread::start (this=@806aea0)
GRW>> at ../../../libgcj/libjava/java/lang/natThread.cc:294
GRW>> #13 0x400afd8c in JvRunMain (klass=@8050dc0, argc=1, argv=@bffff6d4)
GRW>> at ../../../libgcj/libjava/prims.cc:867
GRW>> #14 0x804f091 in main (argc=1, argv=@bffff6d4)
GRW>>
GRW>>
GRW>>
GRW>>
GRW>>