openjdk team mailing list archive
-
openjdk team
-
Mailing list archive
-
Message #04568
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