Aanschouw het volgende stukje code:
Met dezelfde input, geeft dit stukje code afhankelijk van het platform een verschillend resultaat.
De context:
Op mijn machine draait dit stukje code in een grotere applicatie op een JBoss 4.2.1.GA applicatieserver.
Ik gebruik Eclipse om te debuggen.
Op mijn Win32 development-PC werkt dit stukje code: strings die UTF-8 encoded characters bevatten worden correct gedecodeerd.
Als ik deze applicatie vervolgens deploy op een Ubuntu Linux machine onder dezelfde JBoss, dan werkt dit stukje code plots NIET meer.
Ik heb deze 3 regeltjes code gedebugged en geverifieerd dat de input EXACT hetzelfde is.
De Charset.decode call lijkt echter niks te doen op de linux machine ...
So far for Java portability?
Wat gaat er fout? Identieke input, identieke algoritmes met identieke parameter.
Wat maakt het verschil? Hoe kan ik dit oplossen?
Specs ontwikkel-PC:
WinXP
JBoss 4.2.1.GA
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)
Specs Ubuntu server:
Ubuntu Linux
JBoss 4.2.1.GA
java version "1.6.0_04"
Java(TM) SE Runtime Environment (build 1.6.0_04-b12)
Java HotSpot(TM) 64-Bit Server VM (build 10.0-b19, mixed mode)
code:
1
2
3
4
5
6
| String decode(String encoded)
{
Charset cs = Charset.forName("UTF-8");
String decoded = cs.decode(ByteBuffer.wrap(encoded.getBytes())).toString();
return decoded;
} |
Met dezelfde input, geeft dit stukje code afhankelijk van het platform een verschillend resultaat.
De context:
Op mijn machine draait dit stukje code in een grotere applicatie op een JBoss 4.2.1.GA applicatieserver.
Ik gebruik Eclipse om te debuggen.
Op mijn Win32 development-PC werkt dit stukje code: strings die UTF-8 encoded characters bevatten worden correct gedecodeerd.
Als ik deze applicatie vervolgens deploy op een Ubuntu Linux machine onder dezelfde JBoss, dan werkt dit stukje code plots NIET meer.
Ik heb deze 3 regeltjes code gedebugged en geverifieerd dat de input EXACT hetzelfde is.
De Charset.decode call lijkt echter niks te doen op de linux machine ...
So far for Java portability?
Wat gaat er fout? Identieke input, identieke algoritmes met identieke parameter.
Wat maakt het verschil? Hoe kan ik dit oplossen?
Specs ontwikkel-PC:
WinXP
JBoss 4.2.1.GA
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)
Specs Ubuntu server:
Ubuntu Linux
JBoss 4.2.1.GA
java version "1.6.0_04"
Java(TM) SE Runtime Environment (build 1.6.0_04-b12)
Java HotSpot(TM) 64-Bit Server VM (build 10.0-b19, mixed mode)
[ Voor 15% gewijzigd door DieterVDW op 20-10-2008 16:06 ]