运行 eclipse 4.4 命令行上的 Eclipse Java 格式化程序

Running the Eclipse Java formatter on the command line with eclipse 4.4

我正在尝试使用 code formatter docs 在命令行上 运行 eclipse java 格式化程序,但失败并显示

异常消息
<current working directory>/--launcher.library file does not exist.

查看 code formatter application code 似乎正在发生的事情是一些 eclipse 参数被格式化程序的命令行解析器解释为不存在的相对文件名。

我知道 some people used to be able to get this to work,但那是 5 年多以前使用旧版本的 eclipse,我想知道是否有人能够在 eclipse 4.4 中使用相同的功能?

更新 1:

这是我使用的命令行:

/home/alexq/eclipse-luna-SR2-4.4.2/eclipse/eclipse -nosplash -consolelog -debug -application org.eclipse.jdt.core.JavaCodeFormatter -verbose -config /home/alexq/eclipse-user-files/formatter-config-for-scripts/MyCodingStandards.ini /home/alexq/eclipse-4.4.2-workspaces/MyWorkspace/MyProject/src/com/example/myproject/MyClassToBeFormatted.java

这是我的 eclipse.ini 文件的内容:

-showlocation
-vm
/home/alexq/JavaSE8/jdk1.8/bin/java
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20150204-1316
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m
-Dorg.eclipse.swt.browser.XULRunnerPath=''

下面是该命令的输出:

Start VM: /home/alexq/JavaSE8/jdk1.8/bin/java
-Dosgi.requiredJavaVersion=1.6
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m
-Dorg.eclipse.swt.browser.XULRunnerPath=''
-jar /home/alexq/eclipse-luna-SR2-4.4.2/eclipse//plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
-os linux
-ws gtk
-arch x86_64
-launcher /home/alexq/eclipse-luna-SR2-4.4.2/eclipse/eclipse
-name Eclipse
--launcher.library /home/alexq/eclipse-luna-SR2-4.4.2/eclipse//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20150204-1316/eclipse_1607.so
-startup /home/alexq/eclipse-luna-SR2-4.4.2/eclipse//plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.appendVmargs
-exitdata 1008087
-showlocation
-product org.eclipse.epp.package.jee.product
-consolelog
-debug
-application org.eclipse.jdt.core.JavaCodeFormatter
-verbose
-config /home/alexq/eclipse-user-files/formatter-config-for-scripts/MyCodingStandards.ini
/home/alexq/eclipse-4.4.2-workspaces/MyWorkspace/MyProject/src/com/example/myproject/MyClass.java
-vm /home/alexq/JavaSE8/jdk1.8/bin/java
-vmargs
-Dosgi.requiredJavaVersion=1.6
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m
-Dorg.eclipse.swt.browser.XULRunnerPath=''
-jar /home/alexq/eclipse-luna-SR2-4.4.2/eclipse//plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar 
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
Install location:
    file:/home/alexq/eclipse-luna-SR2-4.4.2/eclipse/
Configuration file:
    file:/home/alexq/eclipse-luna-SR2-4.4.2/eclipse/configuration/config.ini loaded
Configuration location:
    file:/home/alexq/eclipse-luna-SR2-4.4.2/eclipse/configuration/
Framework located:
    file:/home/alexq/eclipse-luna-SR2-4.4.2/eclipse/plugins/org.eclipse.osgi_3.10.2.v20150203-1939.jar
Loading extension: reference:file:org.eclipse.osgi.compatibility.state_1.0.1.v20140709-1414.jar
        eclipse.properties not found
Framework classpath:
    file:/home/alexq/eclipse-luna-SR2-4.4.2/eclipse/plugins/org.eclipse.osgi_3.10.2.v20150203-1939.jar
    file:/home/alexq/eclipse-luna-SR2-4.4.2/eclipse/plugins/
    file:/home/alexq/eclipse-luna-SR2-4.4.2/eclipse/plugins/org.eclipse.osgi.compatibility.state_1.0.1.v20140709-1414.jar
Debug options:
    file:/home/alexq/eclipse-4.4.2-workspaces/MyWorkspace/MyProject/.options not found
Time to load bundles: 3
org.eclipse.m2e.logback.configuration: The org.eclipse.m2e.logback.configuration bundle was activated before the state location was initialized.  Will retry after the state location is initialized.
Starting application: 1459
org.eclipse.m2e.logback.configuration: Logback config file: /home/alexq/workspace/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.5.1.20150109-1820.xml
org.eclipse.m2e.logback.configuration: Initializing logback
/home/alexq/eclipse-4.4.2-workspaces/MyWorkspace/MyProject/-showlocation does not exist. Please try specifying valid absolute path. 

Usage: eclipse -application org.eclipse.jdt.core.JavaCodeFormatter [ OPTIONS ] -config <configFile> <files>

   <files>   Java source files and/or directories to format.
             Only files ending with .java will be formatted in the given directory.
   -config <configFile> Use the formatting style from the specified properties file.
                        Refer to the help documentation to find out how to generate this file.

 OPTIONS:

   -help                Display this message.
   -quiet               Only print error messages.
   -verbose             Be verbose about the formatting job.

作为解决方法,我从 here 下载了 eclipse 3.6 并尝试了 运行 相同的 eclipse 格式化程序命令,它成功了。

另一个解决方法 - 使用 Eclipse Neon.2,我刚刚从 eclipse.ini 的开头删除了 -showlocation,现在文件如下所示:

-startup
plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.401.v20161122-1740
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-XX:+UseStringDeduplication
-Dosgi.requiredJavaVersion=1.8
-Xms2048m
-Xmx2048m

JavaCodeFormatter 现在可以从命令行运行。