Ahoj,
Nasel jsem k tomu na
(http://forum.java.sun.com/thread.jspa?forumID=423&threadID=540624)
nasledujici vysvetleni i s dekompilovanym zdrojakem:
I encountered your same error with JDBC RowSet trying to run the
JdbcRowSetSample example.
After having downloaded a Java disassembler (JAD), I decompressed rowset.jar
in a directory and disassembled the JdbcRowSetResourceBundle class.
Luckily the bug in the constructor was very easy to find:
private JdbcRowSetResourceBundle()
throws IOException
{
Locale locale = Locale.getDefault();
String s = locale.getCountry();
if(!s.equals("") && !s.equals("US"))
propResBundle = new
PropertyResourceBundle(Thread.currentThread().getContextClassLoader().getRes
ourceAsStream("com/sun/rowset/RowSetResourceBundle_" + s + "." +
"properties"));
else
propResBundle = new
PropertyResourceBundle(Thread.currentThread().getContextClassLoader().getRes
ourceAsStream("com/sun/rowset/RowSetResourceBundle.properties"));
}
In practice the library cannot work on a machine with Locale different from
US, because the only Resource Bundle present in rowset.jar is
RowSetResourceBundle.properties, while on such a machine this class tries to
read RowSetResourceBundle_<Locale.getCountry()>.properties.
So I copied the RowSetResourceBundle.properties file, renamed the copy in
RowSetResourceBundle_<Locale.getCountry()>.properties and added it to the
rowset.jar archive.
Now everything works perfectly !
Alternatively you could change your Locale to US locale.
Happy to have solved a problem to you (and to me of course) !
Cili jedna se o RowSetResourceBundle, coz jsi asi zjistil - ale hlavni
problem je IMHO v tom, ze na misto _<LOCALE> se tady odcividne dosazuje
country code a ne language code, coz mi teda neni jasne, myslel jsem, ze
jako prvni se pise vzdycky language - Tzn. zjisti si countrycode z
aktualniho locale (To asi neni CZ, ale mozna CS u Ceske republiky) - a taky
pozor na velka pismena, u language jsou mala, u country velka. Nejenom ze je
to blbe naprogramovane, protoze standardne by se melo skakat vzdy po
nejpodobnejsich resourcech a tudiz pokud nejsou by to melo vzit primo ten
RowSetResourceBundle.properties, ale i ten primo countrycode za tim resource
bundlem je spatne a mel by tam byt language code a country code az na druhem
miste - viz dokumentace k ResourceBundle.java:
* Each resource bundle in a family contains the same items, but the items
have
* been translated for the locale represented by that resource bundle.
* For example, both "MyResources" and "MyResources_de" may have a
* <code>String</code> that's used on a button for canceling operations.
* In "MyResources" the <code>String</code> may contain "Cancel" and in
* "MyResources_de" it may contain "Abbrechen".
*
* <P>
* If there are different resources for different countries, you
* can make specializations: for example, "MyResources_de_CH" contains
objects for
* the German language (de) in Switzerland (CH). If you want to only
* modify some of the resources
* in the specialization, you can do so.
- Takze jestli neni problem v tom, ze to prejmenujes treba na *_en nebo na
*_cz ale oni tam vyzaduji jako kod *_US, resp. *_CS...
Drzim palce,
Ahoj, Archie
----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Friday, September 01, 2006 9:32 AM
Subject: RE: CachedRowSet+nullPointerException
> To Artur:
> Velice dekuji za alespon jeden nazor a ochotu. Cenim si toho.
>
> Prohledal jsem snad vsechno co mi google vyplivnul na toto tema. Vcetne
> samozrejme oficialni diskuza na forums.java.sun.com
> Vsude kdyz uz je nejaka odpoved. tak je zmenit nazev
> RowSetResourceBundle.properties
> na
> RowSetResourceBundle_<LOCALE>.properties
>
> Toto jsem zkousel. Bohuzel bezvysledne. Stejne tak jsem zkousel podle
Arturova
> napadu kombinace JdbcRowSetResourceBundle.properties ci
> JdbcRowSetResourceBundle.properties bohuzel taky bezvysledne. I kdyz zda
se to
> rozumne. Jelikoz vsechny hlavni klasy tam zacinaji Jdbc. Ted tedy zkusim
jeste
> najit primo zdrojaky ci nejakou kloudnou dokumentaci a popatrat, jakej
> properties file tam tedy opravdu inicializuje.
>
> Toto je jedina vec na Jave, ktera me opravdu nesmirne vadi. Ze obcas to
> pripomina spis alchymii. Hlavne dle meho soudu CachedRowSet je pomerne
hojne
> pouzivany. Tento bug, ktery zde popisuji je znam uz vice nez dva roky a do
teto
> chvile nejenze nikdo nevydal bugfix, ale na celym internetu nenajdete
kloudnou
> odpoved od vyvojaru, na oficialnim foru ci proste nekde tak :o) Mozna jsem
jen
> blbej a nekde jsem neco prehlidnul, ale vzhledem k tomu, ze nad timto
problemem
> sedim uz druhy den,to na me presne takto pusobi.
>
> BTW: Nenapadl by nekoho jiny rozumny zpusob jak cachovat data, aby se v
nich
> dalo listovat?
>
> Poznamka:
> Omlouvam se, ze neudrzuji historii, maily mam stazeny a archivovany doma
>
> Diky
> Zdenek Kasparek
>
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
----- Original Message -----
From: "Artur Linhart - Java Communication" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Friday, September 01, 2006 7:13 AM
Subject: Re: CachedRowSet+nullPointerException
> Ahoj,
>
> nemam bohuzel k dispozici zdrojaky od tridy JdbcRowSetResourceBundle
> (ani classu - ve standardnim J2SE JDK 1.4.1 jsem ji nenasel) tak doufam ze
> nebudu placat uplne nesmysly, ale jak to popisujes, pripada mi, ze by se
> melo zjistit jak se v metode
> com.sun.rowset.JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle
> konstruje inputstream - podle zdrojaku trid ke kterym zdroje mam se zda ze
> se nenajde dany property soubor a diky tomu se jako InputStream podstrkuje
> null - asi zjistit jake jmeno property souboru se tam pouziva (popr. odkud
> se generuje) a podle onoho jmena mu pak podstrcit soubor, ktery se bude
> jmenovat tak, jak se ocekava (ve spravne packagi). Rekl bych, ze se urcite
> nebude jmenovat PropertyResourceBundle.properties, ale asi nejak jinak -
> zrejme JdbcRowSetResourceBundle.properties (popr. napr.
> JdbcRowSetResourceBundle_en.properties pro anglictinu, atp.) nebo nejak,
jak
> se to stanovi v te metode getJdbcRowSetResourceBundle...
> Do konstruktoru PropertyResourceBundle (InputStream stream) totiz uz pri
> volani z konstruktoru JdbcRowSetResourceBundle vstupuje s nejvetsi
> pravdepodobnosti null, takze bych rekl ze s tridou PropertyResourceBundle
> nebo nejakou teoretickou chybou v ni to urcite souviset nebude...
>
> Prirozene je otazka jak najit spravny resource bundle - neni mozne ze se
tam
> ma dohrat jeste nejaky jar s lokalizaci nebo neco podobneho? Kdyz se tehle
> chyby zbavis tim, ze tam das prazdny property soubor, tak to asi casem
> spadne na tom, ze v tom property souboru neni nejaky klic, ktery to bude
> treba pozadovat...
>
> Mozna by pomohlo se podivat, jak zaridit spravne lokalizaci CachedRowSet a
> to by mohlo vyresit tenhle problem ;-)
>
> Chyba muze souviset i s tim, ze tam sice mas nejaky spravny odvozeny
> resource bundle, napr. JdbcRowSetResourceBundle_cz.properties, ale jako
> defaultni Locale neni nastaven jazyk ktery mu odpovida (v tomto priklade
ne
> cestina, ale treba anglictina pro kterou resource bundle s nazvem "*_cz"
> nebude s fungovat) - bylo by dobre nakopirovat
> (prejmenovat) takovehle nejake properties ktere tam treba existuji
> specificke pro jazyk na jmeno property souboru bez toho "_cz" (nebo jine
> pripony) aby to fungovalo pro vsechny Locale, popr. zkusit zmenit
defaultni
> Locale...
>
> Jinak mne takhle obecne "z voleje" bez moznosti to zkoumat konkretne nic
> nenapada... Treba to nejak pomuze v hledani voditka pokud to primo Tvuj
> problem nebude resit...
>
> Ahoj, Artur.
>
> ----- Original Message -----
> From: <[EMAIL PROTECTED]>
> To: <[email protected]>
> Sent: Thursday, August 31, 2006 4:58 PM
> Subject: CachedRowSet+nullPointerException
>
>
> > Dobre odpoledne,
> > Pokud se nekdo setkal s nize uvedenym problemem a nasel reseni. Budu
> nesmirne
> > vdecny, za kazdy poznatek.
> >
> > Mam WebAplikaci
> > JDK: 1.4
> > Tomcat: 3.2
> > Server: AS/400
> >
> > Volam servlet, ktery se connectuje na databazi (DB2) a vraci nejaky
data.
> > Jelikoz DB2 neumi LIMIT a ja potrebuju vracenymi daty listovat ( rozumej
> > strankovat vystupni tabulku ) jal jsem se hledat reseni v cachovani dat
a
> > listovani z cache.
> > Pouzivam rowset.jar 1.0 . Ale dostal jsem se do situace, ve ktere dkyz
v
> metode
> > servletu chci vytvorit instanci
> >
> > CachedRowSet crs = new CachedRowSetImpl();
> >
> > dostanu nullPointerException cituji:
> >
> > java.lang.NullPointerException
> > at java.io.Reader.<init>(Reader.java:61)
> > at java.io.InputStreamReader.<init>(InputStreamReader.java:80)
> > at java.util.Properties.load(Properties.java:266)
> > at
java.util.PropertyResourceBundle.<init>(PropertyResourceBundle.java:96)
> > at com.sun.rowset.JdbcRowSetResourceBundle.<init>(Unknown Source)
> > at
>
com.sun.rowset.JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle(Unknown
> > Source)
> > at com.sun.rowset.CachedRowSetImpl.<init>(Unknown Source)
> >
> >
> > Cele odpoledne marne hledam smysluplne reseni. Zjistil jsem, ze se jedna
o
> bug
> > souvisejici se spatnym ctenim PropertyResourceBundle. Nasel jsem par
typu,
> ze
> > je potreba prejmenovat PropertyResourceBundle.properties, ale at se
snazim
> jak
> > chci, nedari se mi za boha hnout z mista.
> >
> > Vi nekdo co stim?????
> >
> > Poznamka:
> > Nemohu upgradovat JDK ani Tomcat, musim pracovat s vyse uvedenymi.
> >
> > Zdenek Kasparek
> >
> > ----------------------------------------------------------------
> > This message was sent using IMP, the Internet Messaging Program.
>