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

ProGuard can';在我的JavaFX应用程序中找不到main方法,java,javafx,proguard,Java,Javafx,Proguard,我制作了一个简单的JavaFX程序,我似乎无法用ProGuard混淆它 我跟进了这个问题: 这是我的代码: import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.layout.AnchorPane; import javafx.stage.Stage; public class HelloWorld extends Application { public stati

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

我跟进了这个问题:

这是我的代码:

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[]);
}
根据另一个问题: 我需要我的类有一个带有主体的
main
方法。很明显,我已经知道了,正如你可以从我上面的代码中看到的


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

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

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

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

这里只是一个黑暗的场景,如果你把你的main放在另一个类中怎么办?@JoseMartinez似乎没有改变任何东西你可以一直使用这个库:只需在你的类上面添加
@KeepApplication
注释。@Voldemort不确定这是否是修复方法。但是,在proguard文档中,类规范显示了左大括号(
{
)应该在新行。那么,你能试着在
KeepClassSwithMembers
设置中的
HelloWorld
类名后面加一行新行吗?@Voldemort lol,sorry2,我想我只需要运行JAR文件。无论如何,我想我知道问题是什么。哇,非常感谢!我不知道使用Eclipse会有什么不同!你知道吗考虑到我正在使用Eclipse,您知道我应该考虑哪些其他因素吗?(NetBeans工作得更好吗?)对于使用Eclipse的任何其他配置我都不太确定。至于NETBeBes,我试过使用你的配置,它看起来很好。@ KucujyTangBug如果有人使用ItILIGI,会发生什么?@ PANAGIODISDRAKATOSO HI,我不再使用Mac了。所以,我不能说如果因特利利使用的话会发生什么。但是,也许你可以。n是否有助于尝试并改进答案?
-keepclasseswithmembers public class com.javafx.main.Main, org.eclipse.jdt.internal.jarinjarloader.*, HelloWorld {
    public static void main(java.lang.String[]);
}