如何在Eclipse中使用任何javac标志编译Web应用程序

问题描述

我有一个Web应用程序,我想在其中使用反射java.lang.reflect.Method.getParameters来检索方法的参数名称。只有使用-parameters标志编译Java文件,才可以检索参数名。

您可以获取任何方法的形式参数的名称方法的构造函数 java.lang.reflect.Executable.getParameters。 (类方法和 构造函数扩展了Executable类,因此继承了 方法Executable.getParameters。)但是,.class文件不存储 认情况下为正式参数名称。这是因为许多工具 生产和消费类文件可能不会期望更大的静态和 包含参数名称的.class文件的动态足迹。在 特别是,这些工具必须处理更大的.class文件,并且 Java虚拟机(JVM)将使用更多内存。此外, 某些参数名称(例如机密或密码)可能会公开 有关安全敏感方法的信息。

将形式参数名称存储在特定的.class文件中,因此 使Reflection API能够检索形式参数名称,进行编译 带有-c编译器的-parameters选项的源文件

来源:https://docs.oracle.com/javase/tutorial/reflect/member/methodparameterreflection.html

如何指示Eclipse使用-parameters编译Web应用程序,以便以后可以使用通过-parameters编译的代码在Eclipse中启动Tomcat服务器?

解决方法

Eclipse有其自己的Java编译器,可以在 Project> Properties:Java Compiler 中选中最后一个复选框来设置-parameters标志的等效项: 存储有关方法参数的信息(可通过反射使用) (默认情况下未启用,并且需要Java 8或更高版本)。