ProGuard 在我的 JavaFX 应用程序中找不到 main 方法



我做了一个简单的JavaFX程序,我似乎无法用ProGuard混淆它。

我已经遵循了这个问题:混淆JavaFX应用程序

这是我的代码:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class HelloWorld extends Application {
    public static void main(String[] args) {
       launch(args);
    }
    @Override
    public void start(Stage primaryStage) throws Exception {
        AnchorPane root = new AnchorPane();
        Scene scene = new Scene(root, 300, 250);
        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

根据问题的答案,这应该是我的配置文件:

-injars /Users/me/Desktop/MyProgram.jar
-outjars /Users/me/Desktop/Obfuscated.jar
-libraryjars <java.home>/lib/rt.jar
-libraryjars <java.home>/lib/ext/jfxrt.jar
-dontshrink
-dontoptimize
-flattenpackagehierarchy ''
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
-adaptresourcefilecontents **.fxml,**.properties,META-INF/MANIFEST.MF
-keepclassmembernames class * {
    @javafx.fxml.FXML *;
}

# Keep - Applications. Keep all application classes, along with their 'main'
# methods.
-keepclasseswithmembers public class com.javafx.main.Main, HelloWorld {
    public static void main(java.lang.String[]);
}

但是当尝试运行.JAR程序时,我得到以下错误:

Error: Main method not found in class a.B, please define the main method as:
   public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application

根据这另一个问题:错误:在类计算中没有找到主方法,请将主方法定义为:我需要我的类有一个具有主体的main方法。从上面的代码中可以看到,显然我已经得到了这个。

我做错了什么?我用的是Java 8

问题似乎是因为您没有使用MANIFEST.MF来指定哪个是主类(我认为这是因为您通过eclipse导出器导出了JAR)

您可以通过尝试在配置中添加这一行来修复此问题。

-keepclasseswithmembers public class com.javafx.main.Main, org.eclipse.jdt.internal.jarinjarloader.*, HelloWorld {
    public static void main(java.lang.String[]);
}

相关内容

  • 没有找到相关文章

最新更新