NullPointer + Jars

Gregory R. Warnes warnes@biostat.washington.edu
Thu May 18 19:01:00 GMT 2000


Oh, I forgot to mention that when the classpath is empty, I get the same
error.
-Greg
On 2000年5月19日, 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>> 


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /