2015-05-28 12 views
7

Ich versuche, eine Vorschau eines XML-Layouts zu sehen, das ein paar benutzerdefinierte Ansichten enthält (nichts Kompliziertes ... meist Wrapper). Ich erhalte den folgenden Fehler:Android Studio-Vorschau: Diese JVM unterstützt keine Konstanten Tag 15

The following classes could not be instantiated: 
- com.app.view.widget.SlidingSwipeRefreshLayout (Open Class, Show Exception, Clear Cache) 
- com.app.view.widget.BetterViewAnimator (Open Class, Show Exception, Clear Cache) 

java.lang.ClassFormatError: This JVM does not support constant tag 15 in class file <Unknown> 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:471) 
    at com.android.tools.idea.rendering.RenderClassLoader.loadClass(RenderClassLoader.java:150) 
    at com.android.tools.idea.rendering.RenderClassLoader.loadClassFile(RenderClassLoader.java:125) 
    at org.jetbrains.android.uipreview.ModuleClassLoader.loadClassFile(ModuleClassLoader.java:287) 
    at com.android.tools.idea.rendering.RenderClassLoader.loadClassFromClassPath(RenderClassLoader.java:118) 
    at org.jetbrains.android.uipreview.ModuleClassLoader.loadClassFromModule(ModuleClassLoader.java:202) 
    at org.jetbrains.android.uipreview.ModuleClassLoader.loadClassFromModuleOrDependency(ModuleClassLoader.java:136) 
    at org.jetbrains.android.uipreview.ModuleClassLoader.load(ModuleClassLoader.java:122) 
    at com.android.tools.idea.rendering.RenderClassLoader.findClass(RenderClassLoader.java:53) 
    at org.jetbrains.android.uipreview.ModuleClassLoader.findClass(ModuleClassLoader.java:84) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:182) 
    at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:101) 
    at com.android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.java:177) 
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207) 
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:132) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:482) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:400) 
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:332) 
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350) 
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:497) 
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:485) 
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:894) 
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:485) 
    at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:590) 
    at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:644) 
    at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1700(AndroidLayoutPreviewToolWindowManager.java:79) 
    at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7$1.run(AndroidLayoutPreviewToolWindowManager.java:586) 
    at com.intellij.openapi.progress.impl.CoreProgressManager$2.run(CoreProgressManager.java:152) 
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:452) 
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:402) 
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54) 
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:137) 
    at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7.run(AndroidLayoutPreviewToolWindowManager.java:581) 
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320) 
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310) 
    at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254) 
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269) 
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227) 
    at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217) 
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238) 
    at com.intellij.util.Alarm$Request$1.run(Alarm.java:351) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
    at java.lang.Thread.run(Thread.java:695) 

Gibt es eine vorgeschlagene Lösung dafür? Ich habe versucht, Android Studio zu säubern/neu aufzubauen und neu zu starten.

+3

Verwenden Sie Lambdas in Ihrer benutzerdefinierten Klasse? Ich habe den gleichen Fehler erhalten, nachdem ich Lambdas zu einer benutzerdefinierten Ansicht hinzugefügt habe. Ich vermute, dass ich eine Möglichkeit finden muss, Android Studio für die Vorschau Java 8 zu verwenden. –

+0

Ich bin in der Tat! Das könnte sehr wohl das Problem sein. – loeschg

Antwort

13

Wenn Sie Lambdas in Ihrer benutzerdefinierten Ansichtsklasse haben, müssen Sie Android Studio unter Java 8 ausführen. Gemäß tools.android.com können Sie dazu die Umgebungsvariable STUDIO_JDK festlegen.

Wenn Sie auf einem Mac sind, können Sie diese Umgebungsvariable gesetzt, so dass es immer von Android Studio, indem Sie die verwendet wird, folgende:

launchctl setenv STUDIO_JDK /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk

(. Passen Sie entsprechend Ihrer tatsächlichen JDK Standort)

Verwandte Themen