Hvordan får man følgende kode til at virke ?

Tags:    java-kompiler java-applet

Hej Udviklere,

Så fik jeg løst mit forrige spørgsmål, med at kompile java source kode direkte til en string. Dette har dog, gjort at jeg er rendt ind i et nyt problem, når jeg forsøger, at køre det som en java applet. Det virker, fint så længe at det blot er en almindelig application, men så snart, at jeg skifter til en java applet, returnere dette kode kald null.

Fold kodeboks ind/udJava kode 


Jeg var lidt inde i selve ToolProvider klassen, for at se, hvorfor det enligt kan være, at den returnere null, når man har tilføjet, alle klasserne fra tools.jar til sin classpath.

Fold kodeboks ind/udJava kode 


Min filstruktur i min endelige .jar fil jeg deployer ser, sådanne her ud:

navn.jar
- com
- org
- META-INF
- sun
- view (egne klasser)

Er der nogen af jer, der har en idé om hvad man skal gøre for, at få en javaCompiler inde i java applet ?

PS. Det skal da lige nævnes, at det er en signeret applet, så der har fået granted alle sikkerhedstilladelser.




7 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
Jeg tror kun, at compileren kommer med, når brugeren har installeret JDK...ikke bare JRE.
Den ligger vistnok i 'tools.jar', så prøv at smide den med.



Hvilken fejl får du ?
Pakker du klasserne med i din egen signerede jar fil ?




Well..du kan bare lænke til tools.jar, men den skal signeres.
Fold kodeboks ind/udKode 




Det tænkte jeg også på at den gjorde; så det er også den jeg har udpakket, det er tools.jar, der ligger som mapperne (com,org,sun,META-INF).

Hvis jeg ikke udpakkede dem, på denne måde så fik jeg også en fejl, når jeg forsøgte at køre det som en almindelig application.

Har du nogle andre gode forslag :) ?



Jeg får en null-pointer exception, når jeg når til hvor jeg benytte mig af compileren.

Jeps, eller rettere jeg har pakket klasserne ud fra tools.jar og lagt dem direkte ind i min egen .jar fil. Det kan godt, være at dette step er forkert, i det tilfælde, hvis det er forkert. Eksistere der så en bedre måde ?



Det vil jeg så forsøge, når jeg engang kommer hjem idag :)

Tak for dine input, hvis det virker, skal jeg nok huske og give dig lidt karma ;)

Ekstra:

Nu har jeg forsøgt med følgende html-kode:

Fold kodeboks ind/udHTML kode 


og fil strukturen i den mappe, det ligger i:
xxx.html
GUI.jar
tools.jar

og i GUI.jar er der nu kun egne klasser, hvoraf nogle af dem er afhængige af tools.jar

Jeg får desværre stadigvæk samme fejl meddelse:

Compiler not found
java.lang.NullPointerException
at xCompiler.XCompiler.makeCompilerTask(XCompiler.java:101)
at xCompiler.XCompiler.compileCode(XCompiler.java:74)
at xCompiler.XCompiler.comileAndRun(XCompiler.java:28)
at view.Applet2$1.actionPerformed(Applet2.java:54)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Jeg har signeret først GUI.jar og der gav det også fejl meddelelse og derefter tools.jar, og der gav det stadigvæk samme fejl meddelse.

Håber, I har en idé omkring, hvad jeg gør galt :)




Indlæg senest redigeret d. 16.03.2012 23:48 af Bruger #15301
Opdateret :-)



t