lift libs in Eclipse ScalaIDE is incompatible with all scala versions - scala

Last day i start Scala with lift framework and Eclipse IDE. after checking this link:
http://scala-ide.org/docs/tutorials/lift24scalaide20/
I setup my project with eclipse. the first time the lift-basic runs as well as any project. but after trying to start a new project eclipse got 12 errors to me with content like this:
lift-actor_2.12-3.0.1.jar of lift_parsing_web build path is cross-compiled with an incompatible version of Scala (2.12.0). In case this report is mistaken, this check can be disabled in the compiler preference page.
hear is my build.sbt file:
name := "lift-parsing"
organization := "my.company"
version := "0.1-SNAPSHOT"
scalaVersion := "2.12.1"
libraryDependencies ++= {
val liftVersion = "3.0.1"
Seq(
"net.liftweb" %% "lift-webkit" % liftVersion % "compile",
"net.liftweb" %% "lift-mapper" % liftVersion % "compile",
"org.mortbay.jetty" % "jetty" % "6.1.26" % "test",
"junit" % "junit" % "4.7" % "test",
"ch.qos.logback" % "logback-classic" % "0.9.26",
"org.scala-tools.testing" % "specs_2.9.1" % "1.6.9",
"com.h2database" % "h2" % "1.2.147"
)
}
in this file i test lift 3.0.1 with scala 2.12.1 as this two version are installed.
but before this test I used the default 2.9.1 scala version and 2.4 lift version and also same problems. in some solutions i change the compiler setting and ignore this error but after that eclipse can't biuld the project and make .class file.
scala: 2.12.1
sbt: 0.13
lift: 3.0.1
finally this is my screen error. thanks for help
errors screenshot

I would check to see if Eclipse has a separate Scala version configuration beyond the one that you define in your sbt file. 2.12.0 and 2.12.1 should be binary compatible, so this shouldn't be a problem if you're using 2.12.1. Also try to build this directly using sbt and see if it registers a problem---if not, that implies it's probably an Eclipse configuration issue.

Related

can`t import kamon-play-26 using SBT

I updated my play to 2.6.0. I have a kamon dependency but sbt can't resolve this dependency.
Did anyone encounter this problem too?
Below is my libraryDependencies in the build.sbt:
libraryDependencies +=
Seq(
ws,
"com.google.inject" % "guice" % "3.0",
"com.typesafe.play" %% "play-json" % "2.6.0",
"io.kamon" %% "kamon-play-26" % "0.6.7"
)
But I get a below error as kamon-play-26 not found...
Kamon for Play 2.6 is available for Scala 2.11 and 2.12 with:
"io.kamon" %% "kamon-play-2.6" % "0.6.8"
Note the period in 2.6.
Searching through the kamon repositories in maven reveals that there is no kamon-play-26 package.
The github page https://github.com/kamon-io/kamon-play indicates that it does exist however. Perhaps its been pulled because the build is failing. Compile your own package from source, perhaps?

Lift-2.5 build issue in sbt/Eclipse

I'm trying to get a mac development environment operational around Eclipse, SBT and Lift. Once installed as near to proper as I'm able to manage, I can run the app from sbt, but Eclipse still reports problems.
Eclipse is the Scala IDE build of Eclipse SDK, Build id:
3.0.1-vfinal-20130711-0941-Typesafe.
SBT is macport installed: sbt #0.12.3_1
Lift is the most recent 2.5 zip (This from this page.)
This tutorial was used for initial guidance. However, this tutorial is for a somewhat earlier version of Lift and associated dependencies, including the sbt-eclipse plugin. What I landed at was the 2.2 version of the eclipse plugin, and in my ~/.sbt/plugin/build.sbt I have this single line:
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.2.0")
Per the tutorial instructions, I'm pulling over the source file (of Lift's lift_basic project specifically) and modifying my project build.sbt to the following:
name := "sample project"
organization := "com.nford"
version := "0.1-SNAPSHOT"
scalaVersion := "2.10.1"
EclipseKeys.createSrc := EclipseCreateSrc.Default + EclipseCreateSrc.Resource
libraryDependencies ++= {
val liftVersion = "2.5"
Seq(
"net.liftweb" %% "lift-webkit" % liftVersion % "compile",
"net.liftweb" %% "lift-mapper" % liftVersion % "compile",
"org.mortbay.jetty" % "jetty" % "6.1.26" % "test",
"junit" % "junit" % "4.7" % "test",
"ch.qos.logback" % "logback-classic" % "0.9.26",
"org.scala-tools.testing" %% "specs" % "1.6.9" % "test",
"com.h2database" % "h2" % "1.2.147"
)
}
Importing the project into Eclipse works fine, except for 20 errors, mostly around the test cases. These include, but are not limited to:
object eclipse is not a member of package org
not found: value JQueryModule
Googling errors like this I see a lot of stuff from a year ago, largely which seems to be a package mismatch. From this research I was able to make some changes (reflected in the build.sbt, etc. above):
Upgrade scala version to 2.10.1
Upgrade lift version to 2.5
Use sbt-eclipse 2.2 plugin
Yet I'm still receiving these errors. To verify; I have updated, from the sbt terminal console, and run the eclipse build from there as well. I imported the project to Eclipse after that point. I am unable to determine where the package mismatches are coming from (or indeed why they can't be discovered, since they exist on the system and sbt can find them). Is this an eclipse IDE plugin weakness, or a solvable problem? Or, in my obvious newness to Scala Lift, am I missing something really obvious?
JQueryModule is not part of Lift. You need to add:
"net.liftmodules" %% "lift-jquery-module_2.5" % "2.3"
Jetty:
"org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container,compile",
"org.eclipse.jetty" % "jetty-servlets" % "8.1.7.v20120910" % "container,compile",
"org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container,compile" artifacts Artifact("javax.servlet", "jar", "jar")
Specs2:
"org.specs2" %% "specs2" % "1.14"

SBT 0.7.7 incremental recompilation doesnt work anymore

I'm using sbt 0.7.7 on ubuntu 12.10 to build a Lift app (Lift 2.4/Java 1.6/ Scala 2.7.7)
When I modify a source file, the sbt compiler recompiles all (even independent) files.
A debug output of "compile" shows:
[debug] External /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jce.jar not on classpath.
[debug] External dependency /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jce.jar not found.
I'm using ~compile and the file is available in the correct path.
Can anybody help me?
** Solution **
Thanks for your help.
It looks like sbt 0.7.7 can't handle symlinks correctly.
I removed the symlink and replaced it by a copy of the original file. This solved the problem.
But we're also updating to sbt 12.3 as soon as possible.
I have this file on my ubuntu 13.04
are you sure they're independent? Is it checkable in some way?
what command do you use for compilation? ~ compile ?
I'd suggest to move from the old SBT, old Lift and old Scala anyway. They're far-far away old, new versions have many improvements in performance and allowed techniques. And in the Scala environment it's common to evolutionize quickly, reducing the maintenance period. Check out the most recent official template: https://github.com/lift/lift_25_sbt/
SBT 0.7.7 is severely deprecated. Unless there is any specific reason for which you have to use that version, a 0.12.3 upgrade will make things much easier.
Most frameworks do not legacy support that version of SBT.
Make sure Java is there
Don't use the open source version of the JDK, it is known to cause hassle with Scala at times.
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
Sample config
name := "YourApp"
version := "0.1-SNAPSHOT"
scalaVersion := "2.10.0"
seq(com.github.siasia.WebPlugin.webSettings :_*)
seq(jrebelSettings: _*)
jrebel.webLinks <++= webappResources in Compile
resolvers ++= Seq(
"Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots",
"Sonatype releases" at "https://oss.sonatype.org/content/repositories/releases"
)
libraryDependencies ++= {
val liftVersion = "2.5-RC6"
Seq(
"commons-lang" % "commons-lang" % "2.6",
"net.liftweb" %% "lift-webkit" % liftVersion % "compile",
"net.liftweb" %% "lift-mongodb-record" % liftVersion % "compile",
"org.mongodb" %% "casbah" % "2.5.0" % "compile",
"org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container,compile",
"org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container,compile" artifacts Artifact("javax.servlet", "jar", "jar"),
"org.specs2" %% "specs2" % "1.12.3" % "test",
"ch.qos.logback" % "logback-classic" % "1.0.7" % "compile"
)
}
classpathTypes ~= (_ + "orbit")
port in container.Configuration := 9100
EclipseKeys.withSource := true

Adding a third-party library to Scala project (Idea 12 with SBT plugin)

I'm developing a Scala application in IntelliJ Idea 12. I have sbt plugin for Idea installed (Setting -> Plugins -> Browse repositories ...). Now I want to use some extra libraries for Scala, let's say one of them is https://github.com/stevej/scala-json. So I downloaded zip file from its source code from its github repository.
What do I do next? What is the standard way of adding a third-party library to Scala project using Intelli Idea 12 with SBT plugin installed?
Try something like this in the .sbt file:
libraryDependencies ++= Seq(
"com.typesafe.slick" %% "slick" % "1.0.0",
"postgresql" % "postgresql" % "9.1-901-1.jdbc4",
"org.scalatest" %% "scalatest" % "1.9.1",
"net.sf.opencsv" % "opencsv" % "2.3",
"org.apache.commons" % "commons-math3" % "3.0"
)
you have to create your .sbt file in your project directory if you don't have one.
This is a quick tutorial on sbt (and another one)

Need help getting sbt 0.10 to choose a local copy of scala 2.9.1.final on Ubuntu

What I have so far:
.bashrc
2 PATH=/opt/scala-2.9.1.final/bin:$PATH
3 PATH=/opt/sbt:$PATH
So my scala-2.9.1.final version is in the /opt folder. The same goes with sbt 0.10.
I'm trying to get it to pick my 2.9.1.final instead of 2.8 whatever. I've tried looking.
What i've done so far is putting symbolic links in projectname/boot/ directory.
ln -s /opt/scala-2.9.1.final scala-2.9.1.final
But it doesn't seem to work? I've also tried this build.sbt (https://github.com/VonC/xsbt-template/blob/master/build.sbt) and change the version to 2.9.1.final.
How do I get sbt>console to use 2.9.1.final? And how does it build using 2.9.1.final?
This is what I get when I type sbt:
user#acomputer:~/project/sbt$ sbt
[info] Set current project to default-295917 (in build file:/home/user/project/sbt/)
>
Thank you for your time.
I'm not experienced sbt user and may only suggest. Seems sbt 0.10.x use scala 2.8.1 itself, so I think sbt console is working by default with this version.
But you can build project with targetting on 2.9.1 by specify scala version in you build.sbt file: `scalaVersion := "2.9.1"' (see https://github.com/harrah/xsbt/wiki/Setup "ConfigureBuild")
And also you can switch scala version used by sbt console by typing "++ 2.9.1" in sbt prompt. (see https://github.com/harrah/xsbt/wiki/Running)
Here's an example of an build.sbt in one of my projects.
organization := "com.andyczerwonka"
name := "esi.intelligence"
version := "0.1"
scalaVersion := "2.9.1"
retrieveManaged := false
logLevel := Level.Info
jettyScanDirs := Nil
seq(webSettings :_*)
temporaryWarPath <<= (sourceDirectory in Compile)(_ / "webapp")
libraryDependencies ++= {
val liftVersion = "2.4-M4"
Seq(
"net.liftweb" %% "lift-webkit" % liftVersion % "compile->default",
"net.liftweb" %% "lift-mapper" % liftVersion % "compile",
"org.eclipse.jetty" % "jetty-webapp" % "7.3.0.v20110203" % "provided,jetty",
"junit" % "junit" % "4.8" % "test",
"ch.qos.logback" % "logback-classic" % "0.9.26",
"org.specs2" %% "specs2" % "1.6.1" % "test",
"net.databinder" %% "dispatch-http" % "0.8.5",
"com.h2database" % "h2" % "1.2.138"
)
}
Notice the 4th line. This tells sbt that I want to use 2.9.1. sbt will bring it down for me and use it.