2012-04-11 4 views
0

я добавил простые аннотации управляемого аспекта проекта, и IntelliJ не может скомпилировать:установленного уровень компиляции для AspectJ ткача в IntelliJ идеи

annotation type patterns are only supported at Java 5 compliance level or above 

Пожалуйста совет, где должен быть настроен уровень компиляции (в проекте в настройках он настроен на Java 6 для всего проекта и всех модулей), в настройках-> aspectj weaver возможно только включить weaver и просмотреть список аспектов.

UPD проблема была связана с OpenJDK, так как плагин animJ не смог распознать его версию правильно. Патч был отправлен сопровождающему.

--- src/common/se/expertsystem/intellij/PluginUtils.java.orig 2012-04-11 14:03:35.000000000 +0300 
+++ src/common/se/expertsystem/intellij/PluginUtils.java 2012-04-11 14:47:11.000000000 +0300 
@@ -31,32 +31,34 @@ 
    */ 
package se.expertsystem.intellij; 

+import com.intellij.openapi.application.ApplicationInfo; 
+import com.intellij.openapi.application.ApplicationManager; 
+import com.intellij.openapi.diagnostic.Logger; 
import com.intellij.openapi.module.Module; 
import com.intellij.openapi.module.ModuleManager; 
-import com.intellij.openapi.roots.ModuleRootManager; 
-import com.intellij.openapi.roots.OrderRootType; 
-import com.intellij.openapi.util.io.FileUtil; 
-import com.intellij.openapi.diagnostic.Logger; 
import com.intellij.openapi.progress.ProgressIndicator; 
import com.intellij.openapi.progress.ProgressManager; 
import com.intellij.openapi.project.Project; 
-import com.intellij.openapi.application.ApplicationInfo; 
-import com.intellij.openapi.application.ApplicationManager; 
-import com.intellij.openapi.vfs.VirtualFile; 
+import com.intellij.openapi.roots.ModuleRootManager; 
+import com.intellij.openapi.roots.OrderRootType; 
+import com.intellij.openapi.util.io.FileUtil; 
import com.intellij.openapi.vfs.VfsUtil; 
+import com.intellij.openapi.vfs.VirtualFile; 
import com.intellij.util.ActionRunner; 

-import java.util.List; 
-import java.util.ArrayList; 
-import java.util.Iterator; 
-import java.io.IOException; 
import java.io.File; 
-import java.lang.reflect.Method; 
+import java.io.IOException; 
import java.lang.reflect.InvocationTargetException; 
-import java.net.URL; 
+import java.lang.reflect.Method; 
+import java.net.MalformedURLException; 
import java.net.URI; 
import java.net.URISyntaxException; 
-import java.net.MalformedURLException; 
+import java.net.URL; 
+import java.util.ArrayList; 
+import java.util.Iterator; 
+import java.util.List; 
+import java.util.regex.Matcher; 
+import java.util.regex.Pattern; 

/** 
    * Class containing useful utility methods for IntelliJ IDEA plugins. 
@@ -68,6 +70,8 @@ 

    private static final Class[] NO_PARAMETERS = new Class[] {}; 

+ private static final Pattern jdkVersionResolver = Pattern.compile("(java|openjdk)\\s+version\\s+\"(\\d+)\\.(\\d+)"); 
+ 
    /** 
    * Find classpath for module. Returns list of <code>File</code>s. 
    * @param project Project to get classpath for. 
@@ -296,13 +300,21 @@ 
    */ 
    public static boolean isJava5(Module module) { 
    final String versionString = getJdkVersionString(module); // Example: java version "1.5.0_07" 
- if(versionString.startsWith("java version \"1.") && versionString.length() > "java version \"1.".length()) 
-  return versionString.charAt("java version \"1.".length()) >= '5'; 
- LOG.error("Unparsable version string: " + versionString); 
- return false; 
+ final Matcher versionMatcher = jdkVersionResolver.matcher(versionString); 
+ if (!versionMatcher.find()) { 
+  LOG.error("Unparsable version string (regex failed): " + versionString); 
+  return false; 
+ } else if (!("1".equals(versionMatcher.group(2)) 
+    && versionMatcher.group(3).charAt(0) >= '5')) { 
+  LOG.error("Version invalid: major "+versionMatcher.group(2)+ 
+  " , minor "+versionMatcher.group(3)); 
+  return false; 
+ } 
+ LOG.info("Detected JDK: "+versionString); 
+ return true; 
    } 

- ///////////////////////////////////////////////////////////////////////////// 
+ ///////////////////////////////////////////////////////////////////////////// 
    // Methods for progress indication 
    ///////////////////////////////////////////////////////////////////////////// 

@@ -382,4 +394,4 @@ 
     return modules; 
    } 
    } 
-} 
\ No newline at end of file 
+} 
+0

Проверить настройки | Компилятор | Javac, возможно, уровень установлен там через параметры компилятора. – CrazyCoder

+0

@CrazyCoder проверил, что - уровень компилятора там не установлен, попытался установить его с -source 1.6 -target 1.6 - это тоже не помогло. – jdevelop

+0

Этот сторонний плагин не был обновлен в течение некоторого времени, вы можете попытаться выполнить команду ping для разработчика: http://plugins.intellij.net/plugin/?idea&id=1127, но это может быть просто несовместимо с нынешние версии IDEA. – CrazyCoder

ответ

1

попробовать

вставляется в iajc задачи в вашем build.xml

+0

Проблема была связана с ошибкой в ​​плагине aspectJ weaver, связанной с обнаружением версии JDK – jdevelop

0

Я решил его для существующего уровня соответствия путем модернизации aspectjweaver баночку. Использовать aspectjweaver-1.7.3.jar

Смежные вопросы