2014-02-28 11 views
5

EDIT: Verschiedene Optionen SBTSBT gibt "Class-Datei hat falsche Version 51.0, sollte 49.0 sein" beim Kompilieren eines gemischten Projekts?

show scalacOptions 
List(-deprecation, -unchecked, -encoding, UTF-8, -Yinline-warnings, -feature) 

show javaOptions 
List() 

about 
[info] This is sbt 0.13.1 
[info] The current project is {file:/Users/ThomasNorth/Documents/CODE/SERVER/MonetiseAlpha/monetise-webserver/}monetise-webserver 1.0.0-SNAPSHOT 
[info] The current project is built against Scala 2.10.3 
[info] 
[info] sbt, sbt plugins, and build definitions are using Scala 2.10.3 

ich die folgende Störung erhalte beim Versuch, ein scala Projekt mit einigen Java-Quellen zu kompilieren, wird der Fehler wie folgt

[error] /Users/ThomasNorth/Documents/CODE/SERVER/MonetiseAlpha/monetise-webserver/src/main/java/com/boxbe/pub/email/EmailAddress.java:31: cannot access java.util.regex.Pattern 
[error] bad class file: /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/rt.jar(java/util/regex/Pattern.class) 
[error] class file has wrong version 51.0, should be 49.0 
[error] Please remove or make sure it appears in the correct subdirectory of the classpath. 
[error] import java.util.regex.Pattern; 
[error]      ^
[error] 1 error 
[error] (compile:compile) javac returned nonzero exit code 
[error] Total time: 13 s, completed 28/02/2014 3:36:38 PM 

Die Sache ist, javac sowohl und Java werden aktualisiert, um ihre neuesten Versionen

javac -Ausführung

javac 1.7.0_51 
javac: no source files 
Usage: javac <options> <source files> 
where possible options include: 

java -version

java version "1.7.0_51" 
Java(TM) SE Runtime Environment (build 1.7.0_51-b13) 
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode) 

build.sbt 

organization := "com.monetise" 

name := "webserver" 

version := "1.0.0-SNAPSHOT" 

scalaVersion := "2.10.3" 

resolvers ++= Seq(
    Resolver.sonatypeRepo("release"), 
    Resolver.sonatypeRepo("snapshots"), 
    "Untyped" at "http://ivy.untyped.com/com.untyped/" 
) 

scalacOptions ++= Seq(
    "-deprecation", 
    "-unchecked", 
    "-encoding", "UTF-8", 
    "-Yinline-warnings", 
    "-feature" 
    // "-Xcheckinit" // for debugging only, see https://github.com/paulp/scala-faq/wiki/Initialization-Order 
    // "-optimise" // this option will slow your build 
) 

Und ich habe nur eine installierte Einzel sdk, die Ideen haben bei /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home

Jeder befindet sich, warum dies geschieht?

Ich habe sogar

javaHome := Some(file("/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home")) 

zu zwingen, die Java zu Hause setzen diese in meinem globals.sbt versucht. SBT ist v 0.13.1

-System ist Mac OS X 10.9.2 (Mavericks)

+2

"Klassendatei hat falsche Version 51.0, sollte 49.0 sein" bedeutet, dass Sie 'javac' aus JDK 5 verwenden, während Sie die Klassenbibliotheken von JDK 7 verwenden. Stellen Sie sicher, dass' JAVA_HOME' auf Ihr JDK7-Installationsverzeichnis zeigt. – Jesper

+0

Versucht: "export JAVA_HOME ='/usr/libexec/java_home -v 1.7' "im Terminal, um JAVA_HOME anzugeben, aber immer noch den gleichen Fehler. – user2943976

+0

Wie sehen Ihre Buildkonfigurationsdateien aus - 'build.sbt' oder' project/* .scala' Dateien? Benutzt du irgendwelche? Könnten Sie "show scalacOptions" und "show javaOptions" und "about" in der SBT-Konsole ausführen und die Ausgaben der Frage hinzufügen? –

Antwort

0

Sie nicht die javaHome Einstellung können Sie die Version von Java zu Einführung sbt verwendet, um anzugeben, dass nur angeben, welche JDK sbt wird nachsehen und welche Binaries es benutzen wird, wenn es Gabeln gibt. Leider wissen die Startup-Skripte für sbt nicht, wie man sich diese javaHome Einstellung anschaut und selbst aktualisiert.

Was Skript verwenden Sie? Können Sie eine which sbt Ausgabe hinzufügen und uns den Inhalt dieses Skripts anzeigen? Wahrscheinlich diese Datei zieht das native Mac OSX JDK und nicht das, das Sie installiert haben.