Gå til innhold

Anbefalte innlegg

Skrevet (endret)

Har litt problemer med å kjøre programmet etter at jeg har lagt filene inn i en jarfil. Selve programmet starter opp greit, men når jeg skal koble meg til jboss serveren så får jeg denne feilmeldingen:

 

javax.naming.NoInitialContextException: Need to specify class name in environmen

t or system property, or as an applet parameter, or in an application resource f

ile: java.naming.factory.initial

 

 

Det virer som om det er noe med classpathen. Den setter jeg i manifest filen, som ser slik ut:

 

Main-Class: LoggInn_Dialog

Class-Path: .

oppsett/jbossall-client.jar

oppsett/jnp-client.jar

oppsett/LoginClient.jar

oppsett

oppsett/jfree/lib/bsh-1.3.0.jar

oppsett/jfree/lib/gnujaxp.jar

oppsett/jfree/lib/jcommon-1.0.0-pre3.jar

oppsett/jfree/lib/jcommon-xml-1.0.0-pre3.jar

oppsett/jfree/jfreereport-core-0.8.5-4.jar

oppsett/jfree/jfreereport-gui-base-0.8.5-4.jar

oppsett/jfree/jfreereport-gui-config-0.8.5-4.jar

osv..

 

 

Noen som vet hva som kan være feil, og hvordan jeg får fikset det?

Endret av TeddyErt
Videoannonse
Annonse
Skrevet
Har litt problemer med å kjøre programmet etter at jeg har lagt filene inn i en jarfil. Selve programmet starter opp greit, men når jeg skal koble meg til jboss serveren så får jeg denne feilmeldingen:

 

javax.naming.NoInitialContextException: Need to specify class name in environmen

t or system property, or as an applet parameter, or in an application resource f

ile: java.naming.factory.initial

 

 

Det virer som om det er noe med classpathen. Den setter jeg i manifest filen, som ser slik ut:

 

Main-Class: LoggInn_Dialog

Class-Path: .

oppsett/jbossall-client.jar

oppsett/jnp-client.jar

oppsett/LoginClient.jar

oppsett

oppsett/jfree/lib/bsh-1.3.0.jar

oppsett/jfree/lib/gnujaxp.jar

oppsett/jfree/lib/jcommon-1.0.0-pre3.jar

oppsett/jfree/lib/jcommon-xml-1.0.0-pre3.jar

oppsett/jfree/jfreereport-core-0.8.5-4.jar

oppsett/jfree/jfreereport-gui-base-0.8.5-4.jar

oppsett/jfree/jfreereport-gui-config-0.8.5-4.jar

osv..

 

 

Noen som vet hva som kan være feil, og hvordan jeg får fikset det?

Litt mer info hadde passet bra..

 

f.eks. hvordan opprettet du .jar filen, og hvordan forsøker du å benytte den i JBoss ? Litt rart med en ContextException for en jar fil.

Skrevet

Slik opprettet jeg jar filen:

 

C:\bin>jar cmf test1.mf test.jar classes\*. class interfaces\*.class datamigrering\*.class gui\*.class services\db\*.class services\log\*.class print\*.class print\kvartal\*.class print\*.class

 

 

Filen er et klientprogram som skal koble seg opp mot jboss og derfor trengs de filene som ligger i classpathen. Jeg lurer på om det kan være filen jndi.properties som den ikke finner. Den ligger i oppsett mappen og det skal være nok å ha mappen i classpathen.

Skrevet
Slik opprettet jeg jar filen:

 

C:\bin>jar cmf test1.mf test.jar classes\*. class interfaces\*.class datamigrering\*.class gui\*.class services\db\*.class services\log\*.class print\*.class print\kvartal\*.class print\*.class

 

 

Filen er et klientprogram som skal koble seg opp mot jboss og derfor trengs de filene som ligger i classpathen. Jeg lurer på om det kan være filen jndi.properties som den ikke finner. Den ligger i oppsett mappen og det skal være nok å ha mappen i classpathen.

Er jar filen et klientprogram som skal deployes i JBoss ? I såfall trenger du vel å pakke filen som en .war fil med J2EE struktur ? Eller er jar filen et bibliotek som skal benyttes av et annet program ?

 

Jeg er ikke helt med på hva du mener med "Filen er et klientprogram som skal koble seg opp mot jboss og derfor trengs de filene som ligger i classpathen"

Skrevet

Ja det fungerer fint når jeg ikke har det i jar fil.

 

Da har jeg samme classpath greiene i en bat fil. Der er da jndi.properties som inneholder ipadressen og alt det greiene til serveren.

Skrevet

Så problemet er at at du ikke får tak i noen av propertiesa fra jndi.properties fila? har du prøvd en system.out.println og se om du faktisk får tak i dem?

Skrevet

det er det eneste jeg kan komme på som det kan være i hvert fall. Feilmeldingen kommer opp med en gang jeg trykker på "logg inn"-knappen. Jeg vet ikke helt hvordan jeg skal skrive det ut på konsollet...

 

Er det mulig å legge inn mapper i classpathen i manifest fila også eller må man ha filer?

Skrevet (endret)

Jeg mistenker at du ikke får lest properties fila di.

 

Hvordan prøver du å lese den filen? Vet at det er litt trixing som må til å lese filer inne i et jar fil..

 

Det med at denne feilen kommer når du trykker på "login" knappen, er jo antageligvis fordi det er da du gjør oppslag mot EJB'ene.

 

EDIT: Beste måten å lese en fil på inne i en jar fil er:

 

InputStream is = <klassenavn>.class.getResourceAsStream( "/META-INF/Manifest.mf" );

 

For eksempel... :)

Endret av krigun
Skrevet (endret)

Jeg har ikke satt opp at den skal leses, jeg tror det skjer ved at den legges i classpath. Sånn er det i hvert fall når jeg kjørte det fra bat fil. Vet ikke om det blir annerledes når jeg kjører det fra jar?

Endret av TeddyErt
Skrevet

Ok, intressant..

 

Fortell, hvordan ser innholdet av jar filen din ut?

Har du lagt alle de jar filene inn i en og samme jar fil?

 

Og jeg tror du bare kan si:

Class-path: ./oppsett

 

Dette forutsetter at alle jar filene ligger i samme hierarki, og IKKE i samme jar fil, såvidt meg bekjent.

Skrevet

Innholdet er at jeg har 4 pakker. Classes, interfaces, lan, print.

 

I tillegg er det en mappe som heter META_INF som inneholder MANIFEST.MF

 

Jeg har ikke lagt noen av de jar filene som jeg setter i classpathen i jar fila. Disse ligger i oppsettmappa som igjen ligger samme sted som jarfila jeg prøver å kjøre.

Skrevet

Ok, da skulle det jo funke..

 

prøvd å endre Class-Path til:

 

Class-Path: ./oppsett

 

?

 

Og da ligger jndi.properties i oppsett mappa, sant?

Skrevet

Det er en workaround som antageligvis vil fungere..

 

Hvis du legger jndi.properties til META-INF mappa i jar filen..

 

Så henter du ut propertiene ved hjelp av følgende kode:

 

   Properties properties = new Properties();
   try 
   {
       properties.load( <klassenavn>.class.getResourceAsStream("/META-INF/jndi.properties) );
   } 
   catch (IOException e) 
   {
       e.printStackTrace();
   }

   String ip = properties.getProperty( "ip-adresse" );

 

o.s.v...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...