Avatar billede stigc Nybegynder
24. november 2004 - 21:18 Der er 19 kommentarer og
1 løsning

Obfuscator af .jar filer

Jeg leder efter en Obfuscator eller tilsvarende der kan få min .jar filer til at fylde mindst muligt. Jeg har prøvet et par stykker gratis/opensource projekter, men oplevede at de genererede fejl. Er der nogen der kender et program eller to som de har gode erfaringer med? Det skal være gratis og kunne arbejde direkte på en .jar fil.
Avatar billede arne_v Ekspert
24. november 2004 - 21:23 #1
Jeg har brugt JMangle og ProGuard. Jeg har set 2 fejl ved JMangle gennem tiden
og jeg har brugt den meget. ProGuard blev prøvet og virkede i det ene af
de to tilfælde.

Hvilke har du prøvet og hvilken slags fejl fik du ?

Om de kan arbejde direkte på en jar fil eller ej er vel ikke så vigtigt. Man
kan da altid lave en 3 liniers bat fil med
  jar xvf
  obfuscate
  jar cvf
Avatar billede stigc Nybegynder
24. november 2004 - 21:56 #2
Det har du jo ret i. Jeg har prøvet CafeBabe og Smokescreen.
Avatar billede arne_v Ekspert
24. november 2004 - 22:00 #3
Avatar billede labanos Nybegynder
25. november 2004 - 13:24 #4
Jeg bruger ProGuard uden de store problemer og er meget tilfreds med den :)
Avatar billede stigc Nybegynder
25. november 2004 - 19:20 #5
Proguard ser lovende ud. Jeg har dog nogen problemer. Efter en obfuscation har den ikke ændret min manifest fil med Main-Class til at pege på det nye klassenavn. Godt, jeg sætte den til ikke at røre Main-Class, men nu får jeg "Fatal Exception occured" når jeg dobbeltklikker på min obfuscated .jar fil. Hvad kan være gået galt?
Avatar billede arne_v Ekspert
25. november 2004 - 19:33 #6
Får du en hel stack trace ?
Avatar billede stigc Nybegynder
25. november 2004 - 19:44 #7
Nej det er en windows dialogbox med overskriften "Java Virtual Machine Launcher"
Avatar billede arne_v Ekspert
25. november 2004 - 19:52 #8
Kunne du prøve at køre den manuelt i en DOS box ?
Avatar billede stigc Nybegynder
25. november 2004 - 19:55 #9
Det samme sker her.
Avatar billede arne_v Ekspert
25. november 2004 - 19:59 #10
Du kører med

java -jar foobar.jar

eller noget lignende (altså ikke javaw) ?

Kan du copy paste hele kommandoen og fejl beskeden ind her ?
Avatar billede stigc Nybegynder
25. november 2004 - 20:04 #11
Jo det gjorde jeg selvfølgelig.

Exception in thread "main" java.lang.NoSuchMethodError: main
Avatar billede arne_v Ekspert
25. november 2004 - 20:05 #12
Bed ofuscatoren om ikke at rename main metoden !
Avatar billede stigc Nybegynder
25. november 2004 - 20:07 #13
Og det er jo klassen, jeg har bedt den om ikke at røre.
Avatar billede arne_v Ekspert
25. november 2004 - 20:09 #14
Den skal både undlade at rename klassen (fordi den står i manifest) og
main metoden (fordi det navn er helt fast).
Avatar billede stigc Nybegynder
25. november 2004 - 20:21 #15
Jeg prøver at lege lidt med indstillingerne....
Avatar billede stigc Nybegynder
25. november 2004 - 20:30 #16
Nu virker det sku' Jeg angav typen på main til at være String[]. Det skulle sættes til java.lang.String[]
Avatar billede arne_v Ekspert
12. december 2004 - 19:45 #17
OK ?
Avatar billede stigc Nybegynder
13. december 2004 - 18:19 #18
Ja tak. Jeg fandt dog andre problemer. Obfuscator smadrede noget af min koden, bla. en CellRenderer klasse. Det eneste jeg kan få til at virke er shrinking. Syntes der er problematisk at jeg er nød til at test hele min applikation. Men jeg er kommet i gang, kigger på nogen andre når jeg får tid.
Avatar billede arne_v Ekspert
13. december 2004 - 18:21 #19
Hvad er der specielt ved den CellRenderer klasse ?
Avatar billede stigc Nybegynder
13. december 2004 - 18:29 #20
Ja det ved jeg ikke rigtig. Jeg extender fra Component og implementerer ListCellRenderer og ved første oprettelse får jeg følgende fejl:

Exception in thread "main" java.lang.ClassCastException: dk.stigc.JavaTunes.aj
        at dk.stigc.JavaTunes.n.getListCellRendererComponent(Unknown Source)
        at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)
        at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Sou
rce)
        at javax.swing.plaf.basic.BasicListUI.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at javax.swing.JList.getPreferredScrollableViewportSize(Unknown Source)
        at javax.swing.ViewportLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at javax.swing.ScrollPaneLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateSi
ze(Unknown Source)
        at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.preferredLa
youtSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
        at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
        at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
        at java.awt.Container.preferredSize(Unknown Source)
        at java.awt.Container.getPreferredSize(Unknown Source)
        at javax.swing.JComponent.getPreferredSize(Unknown Source)
        at javax.swing.plaf.basic.BasicSplitPaneUI$BasicHorizontalLayoutManager.
getPreferredSizeOfComponent(Unknown Source)
        at javax.swing.plaf.basic.BasicSplitPaneUI$BasicHorizontalLayoutManager.
getPreferredSizes(Unknown Source)
        at javax.swing.plaf.basic.BasicSplitPaneUI$BasicHorizontalLayoutManager.
resetToPreferredSizes(Unknown Source)
        at javax.swing.plaf.basic.BasicSplitPaneUI$BasicHorizontalLayoutManager.
layoutContainer(Unknown Source)
        at java.awt.Container.layout(Unknown Source)
        at java.awt.Container.doLayout(Unknown Source)
        at java.awt.Container.validateTree(Unknown Source)
        at java.awt.Container.validateTree(Unknown Source)
        at java.awt.Container.validateTree(Unknown Source)
        at java.awt.Container.validateTree(Unknown Source)
        at java.awt.Container.validateTree(Unknown Source)
        at java.awt.Container.validate(Unknown Source)
        at java.awt.Window.show(Unknown Source)
        at java.awt.Component.show(Unknown Source)
        at java.awt.Component.setVisible(Unknown Source)
        at dk.stigc.JavaTunes.JavaTunes.main(Unknown Source)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester