← Back to team overview

openjdk team mailing list archive

Bug#552334: openjdk-6-jre-headless: Misbehaving java (but working javac) for LANG=C environments

 

Package: openjdk-6-jre-headless
Version: 6b16-1.6.1-2
Severity: normal

When in a LANG=*.UTF-8 environment a directory is created with non-ASCII
characters in it and afterwards java is called within this directory with LANG
set to C, java doesn't find the class file.
This affects several configure tests who fail in such directories with the
following message:

Exception in thread "main" java.lang.NoClassDefFoundError: Test
Caused by: java.lang.ClassNotFoundException: Test

Interestingly and inconsistently, javac works so java and javac have a
different way of interpreting the current directory.
This test snippet can be used to verify the bad behaviour of java.

# dpkg-reconfigure locales if no locale is set up yet
export LANG=de_DE.UTF-8
tmpdir=/tmp/javatest-йаватест
mkdir -p $tmpdir; cd $tmpdir
echo "public class Test {public static void main (String args[]) 
{System.exit(0);}}" > Test.java
javac Test.java
java Test
# both work so far
export LANG=C
javac Test.java
java Test
# boom!

Using strace, I get the following line:

[pid 22064] stat("/tmp/javatest-????????????????", 0x7f4c0e71b970) = -1 ENOENT 
(No such file or directory)

For the record, importing Python and Ruby modules or calling stat works in
such situations :-)

>>> import os
>>> os.getcwd()
'/tmp/javatest-\xd0\xb9\xd0\xb0\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd1\x81\xd1\x82'
>>> os.stat(os.getcwd())
(16877, 195937, 65025L, 2, 1000, 1000, 4096, 1256484238, 1256484354, 
1256484354)

irb(main):005:0> Dir.getwd
=> 
"/tmp/javatest-\320\271\320\260\320\262\320\260\321\202\320\265\321\201\321\202"
irb(main):006:0> File.stat(Dir.getwd)
=> #<File::Stat dev=0xfe01, ino=195937, mode=040755, nlink=2, uid=1000, 
gid=1000, rdev=0x0, size=4096, blksize=4096, blocks=8, atime=Sun Oct 25 
16:23:58 +0100 2009, m>\time=Sun Oct 25 16:25:54 +0100 2009, ctime=Sun Oct 25 
16:25:54 +0100 2009>

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.28-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages openjdk-6-jre-headless depends on:
ii  ca-certificates-java   20080712          Common CA certificates (JKS keysto
ii  dpkg                   1.15.1            Debian package management system
ii  java-common            0.30              Base of all Java packages
ii  libc6                  2.9-24            GNU C Library: Shared libraries
ii  libcups2               1.4.1-5           Common UNIX Printing System(tm) -
ii  libfreetype6           2.3.5-1+b1        FreeType 2 font engine, shared 
lib
ii  libgcc1                1:4.4.1-2         GCC support library
ii  libjpeg62              6b-14             The Independent JPEG Group's JPEG
ii  liblcms1               1.16-10           Color management library
ii  libnss3-1d             3.12.4-1          Network Security Service 
libraries
ii  openjdk-6-jre-lib      6b16-1.6.1-2      OpenJDK Java runtime 
(architecture
ii  rhino                  1.7R1-2           JavaScript engine written in Java
ii  tzdata-java            2008e-4           time zone and daylight-saving 
time
ii  zlib1g                 1:1.2.3.3.dfsg-12 compression library - runtime

Versions of packages openjdk-6-jre-headless recommends:
ii  icedtea-6-jre-cacao         6b16-1.6.1-2 Alternative JVM for OpenJDK, 
using

-- no debconf information