JavaFX Exceptions at Startup after obfuscating

Viewed 77

I finally managed to obfuscated my program, after realizing I could not obfuscated the Java FX Controller class, since UI Components could not be injected anymore, I rewrote everything, so the Controller does not have be obfuscated.

So far so good, when I start my program now, as soon as the GUI is to be displayed, I get new Exceptions:

java.lang.NoSuchMethodException: com.sun.prism.shader.FillPgram_Color_Loader.loadShader(com.sun.prism.ps.ShaderFactory,java.io.InputStream)

        at java.base/java.lang.Class.getMethod(Class.java:2201)
        at com.sun.prism.d3d.D3DResourceFactory.createStockShader(D3DResourceFactory.java:412)
        at com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:263)
        at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:484)
        at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:355)
        at com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedPgram(BaseShaderGraphics.java:900)
        at com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedRect(BaseShaderGraphics.java:601)
        at com.sun.prism.impl.ps.BaseShaderGraphics.fillRect(BaseShaderGraphics.java:1507)
        at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectanglesDirectly(NGRegion.java:1112)
        at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectangle(NGRegion.java:852)
        at com.sun.javafx.sg.prism.NGRegion.renderAsRectangle(NGRegion.java:754)
        at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)
        at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)
        at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:479)
        at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:328)
        at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
        at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
        at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
        at java.base/java.lang.Thread.run(Thread.java:832)
java.lang.InternalError: Error loading stock shader FillPgram_Color
        at com.sun.prism.d3d.D3DResourceFactory.createStockShader(D3DResourceFactory.java:417)
        at com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:263)
        at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:484)
        at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:355)
        at com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedPgram(BaseShaderGraphics.java:900)
        at com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedRect(BaseShaderGraphics.java:601)
        at com.sun.prism.impl.ps.BaseShaderGraphics.fillRect(BaseShaderGraphics.java:1507)
        at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectanglesDirectly(NGRegion.java:1112)
        at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectangle(NGRegion.java:852)
        at com.sun.javafx.sg.prism.NGRegion.renderAsRectangle(NGRegion.java:754)
        at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)
        at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)
        at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:479)
        at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:328)
        at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
        at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
        at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
        at java.base/java.lang.Thread.run(Thread.java:832)
java.lang.NoSuchMethodException: com.sun.prism.shader.FillPgram_Color_Loader.loadShader(com.sun.prism.ps.ShaderFactory,java.io.InputStream)
        at java.base/java.lang.Class.getMethod(Class.java:2201)
        at com.sun.prism.d3d.D3DResourceFactory.createStockShader(D3DResourceFactory.java:412)
        at com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:263)
        at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:484)
        at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:355)
        at com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedPgram(BaseShaderGraphics.java:900)
        at com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedRect(BaseShaderGraphics.java:601)
        at com.sun.prism.impl.ps.BaseShaderGraphics.fillRect(BaseShaderGraphics.java:1507)
        at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectanglesDirectly(NGRegion.java:1112)
        at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectangle(NGRegion.java:852)
        at com.sun.javafx.sg.prism.NGRegion.renderAsRectangle(NGRegion.java:754)
        at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)
        at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)
        at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:479)
        at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:328)
        at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
        at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
        at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
        at java.base/java.lang.Thread.run(Thread.java:832)
java.lang.InternalError: Error loading stock shader FillPgram_Color
        at com.sun.prism.d3d.D3DResourceFactory.createStockShader(D3DResourceFactory.java:417)
        at com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:263)
        at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:484)
        at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:355)
        at com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedPgram(BaseShaderGraphics.java:900)
        at com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedRect(BaseShaderGraphics.java:601)
        at com.sun.prism.impl.ps.BaseShaderGraphics.fillRect(BaseShaderGraphics.java:1507)
        at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectanglesDirectly(NGRegion.java:1112)
        at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectangle(NGRegion.java:852)
        at com.sun.javafx.sg.prism.NGRegion.renderAsRectangle(NGRegion.java:754)
        at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)
        at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)
        at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:479)
        at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:328)
        at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
        at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
        at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
        at java.base/java.lang.Thread.run(Thread.java:832)
java.lang.UnsatisfiedLinkError: Can't obtain invoke method from class com.sun.jna.Native$ffi_callback
        at com.sun.jna.Native.initIDs(Native Method)
        at com.sun.jna.Native.<clinit>(Native.java:139)
        at com.sun.jna.Pointer.<clinit>(Pointer.java:41)
        at com.kosprov.jargon2.nativeri.backend.NativeRiJargon2Backend.copyToMemory(NativeRiJargon2Backend.java:274)
        at com.kosprov.jargon2.nativeri.backend.NativeRiJargon2Backend.rawHash(NativeRiJargon2Backend.java:77)
        at com.kosprov.jargon2.internal.Jargon2BackendAdapter.rawHash(Jargon2BackendAdapter.java:23)
        at com.kosprov.jargon2.internal.HasherImpl.rawHash(HasherImpl.java:236)
        at app.A.A(CryptoUtils.java:37)
        at app.B.B(Encryptor.java:74)
        at app.B.B(Encryptor.java:117)
        at app.E$2.A(ProgressController.java:193)
        at app.E$2.call(ProgressController.java:1)
        at javafx.concurrent.Task$TaskCallable.call(Task.java:1425)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.lang.Thread.run(Thread.java:832)

I did exclude / keep JavaFX etc via:

    -keepclasseswithmembers,includedescriptorclasses,includecode class java** {
        <fields>;
        <methods>;
    }
    
    -keepclasseswithmembers,includedescriptorclasses,includecode class javax** {
        <fields>;
        <methods>;
    }
    
    -keepclasseswithmembers,includedescriptorclasses,includecode class com** {
        <fields>;
        <methods>;
    }
    
    -keepclasseswithmembers,includedescriptorclasses,includecode class javafx** {
        <fields>;
        <methods>;
    }
    
    -keepclasseswithmembers,includedescriptorclasses,includecode class jdk** {
        <fields>;
        <methods>;
    }
    
    -keepclasseswithmembers,includedescriptorclasses,includecode class org** {
        <fields>;
        <methods>;
    }
    
    -keepclasseswithmembers,includedescriptorclasses,includecode class sun** {
        <fields>;
        <methods>;
    }

    -keepclasseswithmembers,includedescriptorclasses,includecode class argon2** {
    <fields>;
    <methods>;
    }

    -keep,includedescriptorclasses,includecode class app.Controller** {
    <fields>;
    <methods>;
    }

I checked the class for the top Exception, and there indeed is no such method, however the class is not obfuscated, so it's been like that before.

Im also unsure about the last Exception, since I also excluded the argon2 library.

0 Answers
Related