2017-04-10 58 views
2

我需要將Java 1.8庫轉換爲使用lambda表達式,方法引用和默認方法的1.6。我找到了backport項目https://github.com/orfjackal/retrolambda。項目,我需要建立使用Maven的,我添加插件來的pom.xml使用retrolambda將Java 1.8代碼轉換爲1.6

<build> 
<plugins> 
    <plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>1.8</source> 
     <target>1.8</target> 
    </configuration> 
    </plugin> 

    <plugin> 
    <groupId>net.orfjackal.retrolambda</groupId> 
    <artifactId>retrolambda-maven-plugin</artifactId> 
    <version>2.5.1</version> 
    <executions> 
     <execution> 
     <goals> 
      <goal>process-main</goal> 
      <goal>process-test</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <defaultMethods>true</defaultMethods> 
     <target>1.6</target> 
    </configuration> 
    </plugin> 
</plugins> 

從我的IntelliJ IDEA的.jar建設 - >構建 - >構建文物。但項目仍在生產Java 1.8庫。我是新來的maven和java,我如何構建爲java庫 1.6庫?

編輯1 現在項目似乎產生正確的.jar版本,但現在拋出lib的異常。

Exception in thread "main" java.lang.NoClassDefFoundError: java/nio/file/attribute/FileAttribute 
at com.morpherltd.dawg.MReader.<init>(MReader.java:15) 
at com.morpherltd.dawg.SingleWordAdjectivizer.<init>(SingleWordAdjectivizer.java:17) 
at com.morpherltd.dawg.Adjectivizer.<init>(Adjectivizer.java:4) 
at LibTest.main(LibTest.java:8) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 
Caused by: java.lang.ClassNotFoundException: 
java.nio.file.attribute.FileAttribute 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
... 9 more 

回答

0

加入這個插件到您的項目POM後 - execute maven goal from Intelli

process-main目標將處理您的主要類別;

process-test目標將處理測試類。

目標執行後生成的工件應在target/classes目錄

+0

TY現在產生正確的版本是可用的,但現在我使用它的時候會得到一個異常。 –

+0

java.nio.file包僅在Java 1.7以上版本可用:https://docs.oracle.com/javase/7/docs/api/java/nio/file/package-summary.html。所以,你需要使用舊類重構代碼來實現你的目標。 –