This is the mail archive of the java-discuss@sourceware.cygnus.com mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: NullPointer + Jars



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>> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]