簡體   English   中英

Intellij Idea:使用IBM JDK 7構建項目的問題

[英]Intellij Idea: Issues with building project using IBM JDK 7

我有一個要求與IBM JDK 7一起使用的項目。我在Windows 7上使用Intellij Idea 15.0.2。我的項目是多模塊maven項目,使用了一些時髦的腳本,還使用gradle使POM扁平化。 maven org.fortasoft:gradle-maven-plugin 現在,當我嘗試構建應用程序( Build -> Rebuild Project )時,在Messages窗口中出現一個線性錯誤

錯誤:顯示java.lang.NullPointerException

當我檢查build.log(C:\\ Users \\ .IntelliJIdea15 \\ system \\ log \\ build-log \\ build.log)時,看到以下異常。 我將項目SDK更改為Oracle JDK 7后,一切正常。 對這里出什么問題有任何想法嗎?

[更新1:]我還試圖使高速緩存無效並重新開始構想,只是為了排除高速緩存在此處犯規。

2015-12-22 14:16:23,343 [   4126]   INFO - .incremental.IncProjectBuilder - java.lang.NullPointerException
org.jetbrains.jps.incremental.ProjectBuildException: java.lang.NullPointerException
     at org.jetbrains.jps.incremental.groovy.GroovyBuilder.build(GroovyBuilder.java:142)
     at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1230)
     at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:904)
     at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:976)
     at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:870)
     at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:695)
     at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:386)
     at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:193)
     at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:137)
     at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:294)
     at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:125)
     at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler$1.run(BuildMain.java:232)
     at org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.java:42)
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:482)
     at java.util.concurrent.FutureTask.run(FutureTask.java:273)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1176)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
     at java.lang.Thread.run(Thread.java:795)
Caused by: java.lang.NullPointerException
     at java.lang.ClassLoader.loadClass(ClassLoader.java:731)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:707)
     at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.createCompilationClassLoader(InProcessGroovyc.java:179)
     at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.runGroovyc(InProcessGroovyc.java:76)
     at org.jetbrains.jps.incremental.groovy.GroovyBuilder.runGroovycOrContinuation(GroovyBuilder.java:201)
     at org.jetbrains.jps.incremental.groovy.GroovyBuilder.build(GroovyBuilder.java:117)
     ... 17 more

對這里出什么問題有任何想法嗎?

如果我們查看InProcessGroovyc.createCompilationClassLoader ,我們可以看到代碼

 private JointCompilationClassLoader createCompilationClassLoader(Collection<String> compilationClassPath) throws Exception {
    ClassLoader parent = obtainParentLoader(compilationClassPath);

    ClassLoader groovyClassLoader = null;
    try {
      ClassLoader auxiliary = parent != null ? parent : buildCompilationClassLoader(compilationClassPath, null).get();
      Class<?> gcl = auxiliary.loadClass("groovy.lang.GroovyClassLoader"); // 179 line, we throw NullPointer Exception

在ClassLoader.loadClass中

public Class<?> loadClass(String name) throws ClassNotFoundException {
    return loadClass(name, false); // 131 line
}


protected Class<?> loadClass(String name, boolean resolve)
        throws ClassNotFoundException
    {
        synchronized (getClassLoadingLock(name)) {
            // First, check if the class has already been loaded
            Class<?> c = findLoadedClass(name); // return null if class not found 

因此,主要問題是IBM JDK 7無法找到groovy.lang.GroovyClassLoader ,請檢查groovy的安裝是否正確, IBM JDK可以看到groovy lib(已下載groovy,正確設置了GROOVY_HOME環境變量,並將GROOVY_HOME/bin添加到了PATH環境中變量)。

因此,看來這實際上是v15.0.2的錯誤。 解決方法是在Settings | Build, Execution, Deployment | Compiler | User-local build process VM options下添加-Didea.parallel.class.loader=false Settings | Build, Execution, Deployment | Compiler | User-local build process VM options Settings | Build, Execution, Deployment | Compiler | User-local build process VM options

在此處輸入圖片說明

更多細節在這里 該修復程序應該在v15.0.3中可用。 到那時為止(至少對我而言),此解決方法有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM