I upgraded my MacBookPro to macOS Sierra and experienced a very odd behavior.
First, I used brew to install sbt as suggested in the doc:
http://www.scala-sbt.org/download.html
Here's a simple test:
cd /tmp; echo $TERM; mkdir AT; cd AT; sbt -no-share -no-global -sbt-create
Apple_Terminal
Getting org.scala-sbt sbt 0.13.13 ...
downloading https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt/0.13.13/jars/sbt.jar ...
[SUCCESSFUL ] org.scala-sbt#sbt;0.13.13!sbt.jar (1934ms)
...
downloading https://repo1.maven.org/maven2/jline/jline/2.13/jline-2.13.jar ...
[SUCCESSFUL ] jline#jline;2.13!jline.jar (170ms)
...
Getting Scala 2.10.6 (for sbt)...
downloading https://repo1.maven.org/maven2/org/scala-lang/jline/2.10.6/jline-2.10.6.jar ...
[SUCCESSFUL ] org.scala-lang#jline;2.10.6!jline.jar (70ms)
downloading https://repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.4/jansi-1.4.jar ...
[SUCCESSFUL ] org.fusesource.jansi#jansi;1.4!jansi.jar (80ms)
:: retrieving :: org.scala-sbt#boot-scala
confs: [default]
5 artifacts copied, 0 already retrieved (24494kB/25ms)
[ERROR] Failed to construct terminal; falling back to unsupported
java.lang.NumberFormatException: For input string: "`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:766)
at jline.internal.InfoCmp.parseInfoCmp(InfoCmp.java:59)
at jline.UnixTerminal.parseInfoCmp(UnixTerminal.java:233)
at jline.UnixTerminal.<init>(UnixTerminal.java:64)
at jline.UnixTerminal.<init>(UnixTerminal.java:49)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at jline.TerminalFactory.getFlavor(TerminalFactory.java:209)
at jline.TerminalFactory.create(TerminalFactory.java:100)
at jline.TerminalFactory.get(TerminalFactory.java:184)
at jline.TerminalFactory.get(TerminalFactory.java:190)
at sbt.ConsoleLogger$.ansiSupported(ConsoleLogger.scala:123)
at sbt.ConsoleLogger$.<init>(ConsoleLogger.scala:117)
at sbt.ConsoleLogger$.<clinit>(ConsoleLogger.scala)
at sbt.GlobalLogging$.initial(GlobalLogging.scala:43)
at sbt.StandardMain$.initialGlobalLogging(Main.scala:64)
at sbt.StandardMain$.initialState(Main.scala:73)
at sbt.xMain.run(Main.scala:29)
at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
at xsbt.boot.Launch$.run(Launch.scala:109)
at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
at xsbt.boot.Launch$.launch(Launch.scala:117)
at xsbt.boot.Launch$.apply(Launch.scala:18)
at xsbt.boot.Boot$.runImpl(Boot.scala:41)
at xsbt.boot.Boot$.main(Boot.scala:17)
at xsbt.boot.Boot.main(Boot.scala)
[info] Loading project definition from /private/tmp/AT/project
[info] Updating {file:/private/tmp/AT/project/}at-build...
[info] Resolving org.scala-lang#scala-library;2.10.6 ...
[info] Resolving org.scala-sbt#sbt;0.13.13 ...
[info] Resolving org.scala-sbt#main;0.13.13 ...
[info] Resolving org.scala-sbt#actions;0.13.13 ...
[info] Resolving org.scala-sbt#classpath;0.13.13 ...
[info] Resolving org.scala-lang#scala-compiler;2.10.6 ...
[info] Resolving org.scala-lang#scala-reflect;2.10.6 ...
[info] Resolving org.scala-sbt#interface;0.13.13 ...
[info] Resolving org.scala-sbt#io;0.13.13 ...
[info] Resolving org.scala-sbt#control;0.13.13 ...
[info] Resolving org.scala-sbt#launcher-interface;1.0.0-M1 ...
[info] Resolving org.scala-sbt#completion;0.13.13 ...
[info] Resolving org.scala-sbt#collections;0.13.13 ...
[info] Resolving jline#jline;2.13 ...
[info] Resolving org.fusesource.jansi#jansi;1.11 ...
[info] Resolving org.scala-sbt#api;0.13.13 ...
[info] Resolving org.scala-sbt#classfile;0.13.13 ...
[info] Resolving org.scala-sbt#logging;0.13.13 ...
[info] Resolving org.scala-sbt#process;0.13.13 ...
[info] Resolving org.scala-sbt#compiler-integration;0.13.13 ...
[info] Resolving org.scala-sbt#incremental-compiler;0.13.13 ...
[info] Resolving org.scala-sbt#relation;0.13.13 ...
[info] Resolving org.scala-sbt#compile;0.13.13 ...
[info] Resolving org.scala-sbt#persist;0.13.13 ...
[info] Resolving org.scala-tools.sbinary#sbinary_2.10;0.4.2 ...
[info] Resolving org.scala-sbt#compiler-ivy-integration;0.13.13 ...
[info] Resolving org.scala-sbt#ivy;0.13.13 ...
[info] Resolving org.scala-sbt#cross;0.13.13 ...
[info] Resolving org.scala-sbt.ivy#ivy;2.3.0-sbt-2cf13e211b2cb31f0d3b317289dca70eca3362f6 ...
[info] Resolving com.jcraft#jsch;0.1.50 ...
[info] Resolving org.scala-sbt#serialization_2.10;0.1.2 ...
[info] Resolving org.scala-lang.modules#scala-pickling_2.10;0.10.1 ...
[info] Resolving org.scalamacros#quasiquotes_2.10;2.0.1 ...
[info] Resolving org.json4s#json4s-core_2.10;3.2.10 ...
[info] Resolving org.json4s#json4s-ast_2.10;3.2.10 ...
[info] Resolving com.thoughtworks.paranamer#paranamer;2.6 ...
[info] Resolving org.spire-math#jawn-parser_2.10;0.6.0 ...
[info] Resolving org.spire-math#json4s-support_2.10;0.6.0 ...
[info] Resolving org.scala-sbt#run;0.13.13 ...
[info] Resolving org.scala-sbt#task-system;0.13.13 ...
[info] Resolving org.scala-sbt#tasks;0.13.13 ...
[info] Resolving org.scala-sbt#tracking;0.13.13 ...
[info] Resolving org.scala-sbt#cache;0.13.13 ...
[info] Resolving org.scala-sbt#testing;0.13.13 ...
[info] Resolving org.scala-sbt#test-agent;0.13.13 ...
[info] Resolving org.scala-sbt#test-interface;1.0 ...
[info] Resolving org.scala-sbt#main-settings;0.13.13 ...
[info] Resolving org.scala-sbt#apply-macro;0.13.13 ...
[info] Resolving org.scala-sbt#command;0.13.13 ...
[info] Resolving org.scala-sbt#template-resolver;0.1 ...
[info] Resolving org.scala-sbt#logic;0.13.13 ...
[info] Resolving org.scala-sbt#compiler-interface;0.13.13 ...
[info] Resolving org.scala-lang#jline;2.10.6 ...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to at (in build file:/private/tmp/AT/)
[ERROR] Failed to construct terminal; falling back to unsupported
java.lang.NumberFormatException: For input string: "`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:766)
at jline.internal.InfoCmp.parseInfoCmp(InfoCmp.java:59)
at jline.UnixTerminal.parseInfoCmp(UnixTerminal.java:233)
at jline.UnixTerminal.<init>(UnixTerminal.java:64)
at jline.UnixTerminal.<init>(UnixTerminal.java:49)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at jline.TerminalFactory.getFlavor(TerminalFactory.java:209)
at jline.TerminalFactory.create(TerminalFactory.java:100)
at jline.TerminalFactory.get(TerminalFactory.java:184)
at jline.TerminalFactory.get(TerminalFactory.java:190)
at sbt.JLine$.sbt$JLine$$terminal(LineReader.scala:85)
at sbt.JLine$.withTerminal(LineReader.scala:88)
at sbt.JLine$.usingTerminal(LineReader.scala:96)
at sbt.JLine$.createReader(LineReader.scala:102)
at sbt.FullReader.<init>(LineReader.scala:132)
at sbt.BasicCommands$$anonfun$shell$1.apply(BasicCommands.scala:184)
at sbt.BasicCommands$$anonfun$shell$1.apply(BasicCommands.scala:181)
at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:30)
at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:30)
at sbt.Command$.process(Command.scala:93)
at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
at sbt.State$$anon$1.process(State.scala:184)
at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
at sbt.MainLoop$.next(MainLoop.scala:96)
at sbt.MainLoop$.run(MainLoop.scala:89)
at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:68)
at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:63)
at sbt.Using.apply(Using.scala:24)
at sbt.MainLoop$.runWithNewLog(MainLoop.scala:63)
at sbt.MainLoop$.runAndClearLast(MainLoop.scala:46)
at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:30)
at sbt.MainLoop$.runLogged(MainLoop.scala:22)
at sbt.StandardMain$.runManaged(Main.scala:57)
at sbt.xMain.run(Main.scala:29)
at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
at xsbt.boot.Launch$.run(Launch.scala:109)
at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
at xsbt.boot.Launch$.launch(Launch.scala:117)
at xsbt.boot.Launch$.apply(Launch.scala:18)
at xsbt.boot.Boot$.runImpl(Boot.scala:41)
at xsbt.boot.Boot$.main(Boot.scala:17)
at xsbt.boot.Boot.main(Boot.scala)
[ERROR] Failed to construct terminal; falling back to unsupported
java.lang.NumberFormatException: For input string: "`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:766)
at jline.internal.InfoCmp.parseInfoCmp(InfoCmp.java:59)
at jline.UnixTerminal.parseInfoCmp(UnixTerminal.java:233)
at jline.UnixTerminal.<init>(UnixTerminal.java:64)
at jline.UnixTerminal.<init>(UnixTerminal.java:49)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at jline.TerminalFactory.getFlavor(TerminalFactory.java:209)
at jline.TerminalFactory.create(TerminalFactory.java:100)
at jline.TerminalFactory.get(TerminalFactory.java:184)
at jline.TerminalFactory.get(TerminalFactory.java:190)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:240)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:232)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:220)
at sbt.JLine$$anonfun$createReader$1.apply(LineReader.scala:103)
at sbt.JLine$$anonfun$createReader$1.apply(LineReader.scala:102)
at sbt.JLine$$anonfun$usingTerminal$1.apply(LineReader.scala:98)
at sbt.JLine$$anonfun$usingTerminal$1.apply(LineReader.scala:96)
at sbt.JLine$.withTerminal(LineReader.scala:89)
at sbt.JLine$.usingTerminal(LineReader.scala:96)
at sbt.JLine$.createReader(LineReader.scala:102)
at sbt.FullReader.<init>(LineReader.scala:132)
at sbt.BasicCommands$$anonfun$shell$1.apply(BasicCommands.scala:184)
at sbt.BasicCommands$$anonfun$shell$1.apply(BasicCommands.scala:181)
at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:30)
at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:30)
at sbt.Command$.process(Command.scala:93)
at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
at sbt.State$$anon$1.process(State.scala:184)
at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
at sbt.MainLoop$.next(MainLoop.scala:96)
at sbt.MainLoop$.run(MainLoop.scala:89)
at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:68)
at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:63)
at sbt.Using.apply(Using.scala:24)
at sbt.MainLoop$.runWithNewLog(MainLoop.scala:63)
at sbt.MainLoop$.runAndClearLast(MainLoop.scala:46)
at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:30)
at sbt.MainLoop$.runLogged(MainLoop.scala:22)
at sbt.StandardMain$.runManaged(Main.scala:57)
at sbt.xMain.run(Main.scala:29)
at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
at xsbt.boot.Launch$.run(Launch.scala:109)
at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
at xsbt.boot.Launch$.launch(Launch.scala:117)
at xsbt.boot.Launch$.apply(Launch.scala:18)
at xsbt.boot.Boot$.runImpl(Boot.scala:41)
at xsbt.boot.Boot$.main(Boot.scala:17)
at xsbt.boot.Boot.main(Boot.scala)
>
In looking a the stack trace, I understand that sbt uses jline
to query the capabilities of the terminal using the 'infocmp' process.
In this case, it shows:
infocmp
# Reconstructed via infocmp from file: /usr/share/terminfo/41/Apple_Terminal
nsterm|Apple_Terminal|AppKit Terminal.app v41+ w/MacRoman charset (color),
am, bw, msgr, xenl, xon,
colors#8, cols#80, it#8, lines#24, ncv#37, pairs#64,
acsc=+\335\,\334-\366.\3770#`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245,
bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL,
il1=\E[L, ind=^J, ka1=\EOq, ka3=\EOs, kb2=\EOr, kbs=\177,
kc1=\EOp, kc3=\EOn, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
kcuu1=\EOA, kent=\EOM, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
kf4=\EOS, op=\E[0m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
smso=\E[7m, smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR,
u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
Indeed, the 'acsc' line matches the content that jline tried to parse as a number.
Switching terminal worked:
export TERM=xterm-256color
cd tmp; echo $TERM; mkdir XC; cd XC; sbt -no-share -no-global -sbt-create
xterm-256color
Getting org.scala-sbt sbt 0.13.13 ...
downloading https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt/0.13.13/jars/sbt.jar ...
[SUCCESSFUL ] org.scala-sbt#sbt;0.13.13!sbt.jar (2051ms)
...
Getting Scala 2.10.6 (for sbt)...
downloading https://repo1.maven.org/maven2/org/scala-lang/jline/2.10.6/jline-2.10.6.jar ...
[SUCCESSFUL ] org.scala-lang#jline;2.10.6!jline.jar (70ms)
downloading https://repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.4/jansi-1.4.jar ...
[SUCCESSFUL ] org.fusesource.jansi#jansi;1.4!jansi.jar (69ms)
:: retrieving :: org.scala-sbt#boot-scala
confs: [default]
5 artifacts copied, 0 already retrieved (24494kB/48ms)
[info] Loading project definition from /private/tmp/XC/project
[info] Updating {file:/private/tmp/XC/project/}xc-build...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to xc (in build file:/private/tmp/XC/)
>
I also noticed that sbt 1.0.0-M4 seems to be unaffected by this
terminal difference:
echo $TERM; mkdir NAT; cd NAT; sbt -no-share -no-global -sbt-create
Apple_Terminal
Getting org.scala-sbt sbt 1.0.0-M4 ...
downloading https://repo1.maven.org/maven2/org/scala-sbt/sbt/1.0.0-M4/sbt-1.0.0-M4.jar ...
[SUCCESSFUL ] org.scala-sbt#sbt;1.0.0-M4!sbt.jar (78ms)
...
Getting Scala 2.11.8 (for sbt)...
downloading https://repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.11/1.0.4/scala-xml_2.11-1.0.4.jar ...
[SUCCESSFUL ] org.scala-lang.modules#scala-xml_2.11;1.0.4!scala-xml_2.11.jar(bundle) (92ms)
downloading https://repo1.maven.org/maven2/jline/jline/2.12.1/jline-2.12.1.jar ...
[SUCCESSFUL ] jline#jline;2.12.1!jline.jar (111ms)
:: retrieving :: org.scala-sbt#boot-scala
confs: [default]
6 artifacts copied, 0 already retrieved (26456kB/26ms)
[info] Loading project definition from /private/tmp/NAT/project
[info] Updating {file:/private/tmp/NAT/project/}nat-build...
[info] Resolving jline#jline;2.12.1 ...
[info] Done updating.
[info] Set current project to nat (in build file:/private/tmp/NAT/)
>
Same behavior with TERM=xterm-256color.
I'm baffled by this.
Has anyone experienced this problem?
jline (and jline2) uses a naive parser
Matcher m = Pattern.compile("\\s*(([^,]|\\\\,)+)\\s*[,$]").matcher(lines[i]);
which cannot handle the input shown. Among other omissions, it looks for a # character, decides that is the terminfo-separator for a numeric capability and its value and attempts to parse everything following the # as an integer. So rather than seeing
acsc=+\335\,\334-\366.\3770#`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245,
as
acsc
=
+\335\,\334-\366.\3770#`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245,
(where the value is a set of character-mappings), it sees
acsc=+\335\,\334-\366.\3770#`\327a\:f\241g\261h
#
i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245,
The problem is aggravated by Apple's habit of supplying long-obsolete software in its base system. If you happened to install something newer, whether with MacPorts or something else, the nsterm entry would have a different value for acsc:
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
which is just a one-one mapping (e.g., "vt100").
The one shown in the question is named nsterm+mac, which corresponds to nsterm-old (renamed in October 2009). The entry was reformatted in September 2010 (reordering the mapping to look as shown), but for practical purposes has been obsolete since 2009.
The ncurses terminfo(5) manual page assumes that the reader knows something about the syntax. That is documented by X/Open, e.g., Formal Grammar.
Well, 1.0.x uses a newer JLine which could be the difference. I'm not sure how I have the following terminal but I can confirm that I'm using the following:
eric$ echo $TERM
xterm-256color
I am using OS X 10.11.6 (El Capitan) so perhaps they changed the default terminal in the newer OS?
This is not too much help but at least it confirms what you found. Also, I haven't found any problems with this configuration using 0.13.x but have added an issue for the 1.0.x dev version related to stty echo after running an sbt script. Refer to https://github.com/sbt/sbt/issues/2963
This issue still occurred for me on OSX 10.12.5 with SBT 0.13.13. Following the comments, I got this to work by just exporting anything other than apple terminal:
export TERM=Apple_NoTerminal
sbt
Related
I have a project which uses JOCL library (http://www.jocl.org/) and has multiple modules. When I run "./activator test" from command line, or run "test" command in SBT console I'm getting errors like the following:
[info] Exception encountered when attempting to run a suite with class name: pl.tarsa.sortalgobox.opencl.CpuMergeSortSpec *** ABORTED ***
[info] java.lang.UnsatisfiedLinkError: Error while loading native library "JOCL_0_1_9-linux-x86_64" with base name "JOCL_0_1_9"
[info] Operating system name: Linux
[info] Architecture : amd64
[info] Architecture bit size: 64
[info] ---(start of nested stack traces)---
[info] Stack trace from the attempt to load the library as a file:
[info] java.lang.UnsatisfiedLinkError: no JOCL_0_1_9-linux-x86_64 in java.library.path
[info] at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1865)
[info] at java.lang.Runtime.loadLibrary0(Runtime.java:870)
[info] at java.lang.System.loadLibrary(System.java:1122)
[info] at org.jocl.LibUtils.loadLibrary(LibUtils.java:80)
[info] at org.jocl.CL.<clinit>(CL.java:47)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextDescription$.enumerate(CLContextDescription.scala:44)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsManager$.contextsDescriptions$lzycompute(CLContextsManager.scala:6)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsManager$.contextsDescriptions(CLContextsManager.scala:6)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsManager$.createCpuContext(CLContextsManager.scala:9)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsCache$.cpuContext$lzycompute(CLContextsCache.scala:24)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsCache$.cpuContext(CLContextsCache.scala:24)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsCache$.withCpuContext(CLContextsCache.scala:28)
[info] at pl.tarsa.sortalgobox.opencl.common.CpuSort.sort(CpuSort.scala:34)
[info] at pl.tarsa.sortalgobox.opencl.common.CpuSort.sort(CpuSort.scala:32)
[info] at pl.tarsa.sortalgobox.sorts.SortChecker.forEmptyArray(SortChecker.scala:31)
[info] at pl.tarsa.sortalgobox.opencl.CpuMergeSortSpec$$anonfun$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(CpuMergeSortSpec.scala:32)
[info] at pl.tarsa.sortalgobox.tests.CommonUnitSpecBase.guardedOpenCLTest(CommonUnitSpecBase.scala:40)
[info] at pl.tarsa.sortalgobox.opencl.CpuMergeSortSpec$$anonfun$1.apply$mcV$sp(CpuMergeSortSpec.scala:31)
[info] at pl.tarsa.sortalgobox.opencl.CpuMergeSortSpec$$anonfun$1.apply(CpuMergeSortSpec.scala:31)
[info] at pl.tarsa.sortalgobox.opencl.CpuMergeSortSpec$$anonfun$1.apply(CpuMergeSortSpec.scala:31)
[info] at org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)
[info] at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
[info] at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
[info] at org.scalatest.Transformer.apply(Transformer.scala:22)
[info] at org.scalatest.Transformer.apply(Transformer.scala:20)
[info] at org.scalatest.FlatSpecLike$$anon$1.apply(FlatSpecLike.scala:1647)
[info] at org.scalamock.scalatest.AbstractMockFactory$$anonfun$withFixture$1.apply(AbstractMockFactory.scala:35)
[info] at org.scalamock.scalatest.AbstractMockFactory$$anonfun$withFixture$1.apply(AbstractMockFactory.scala:34)
[info] at org.scalamock.MockFactoryBase$class.withExpectations(MockFactoryBase.scala:41)
[info] at pl.tarsa.sortalgobox.tests.CommonUnitSpecBase.withExpectations(CommonUnitSpecBase.scala:28)
[info] at org.scalamock.scalatest.AbstractMockFactory$class.withFixture(AbstractMockFactory.scala:34)
[info] at pl.tarsa.sortalgobox.tests.CommonUnitSpecBase.withFixture(CommonUnitSpecBase.scala:28)
[info] at org.scalatest.FlatSpecLike$class.invokeWithFixture$1(FlatSpecLike.scala:1644)
[info] at org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala:1656)
[info] at org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala:1656)
[info] at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
[info] at org.scalatest.FlatSpecLike$class.runTest(FlatSpecLike.scala:1656)
[info] at org.scalatest.FlatSpec.runTest(FlatSpec.scala:1683)
[info] at org.scalatest.FlatSpecLike$$anonfun$runTests$1.apply(FlatSpecLike.scala:1714)
[info] at org.scalatest.FlatSpecLike$$anonfun$runTests$1.apply(FlatSpecLike.scala:1714)
[info] at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:413)
[info] at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401)
[info] at scala.collection.immutable.List.foreach(List.scala:381)
[info] at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
[info] at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:390)
[info] at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:427)
[info] at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401)
[info] at scala.collection.immutable.List.foreach(List.scala:381)
[info] at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
[info] at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:396)
[info] at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:483)
[info] at org.scalatest.FlatSpecLike$class.runTests(FlatSpecLike.scala:1714)
[info] at org.scalatest.FlatSpec.runTests(FlatSpec.scala:1683)
[info] at org.scalatest.Suite$class.run(Suite.scala:1424)
[info] at org.scalatest.FlatSpec.org$scalatest$FlatSpecLike$$super$run(FlatSpec.scala:1683)
[info] at org.scalatest.FlatSpecLike$$anonfun$run$1.apply(FlatSpecLike.scala:1760)
[info] at org.scalatest.FlatSpecLike$$anonfun$run$1.apply(FlatSpecLike.scala:1760)
[info] at org.scalatest.SuperEngine.runImpl(Engine.scala:545)
[info] at org.scalatest.FlatSpecLike$class.run(FlatSpecLike.scala:1760)
[info] at org.scalatest.FlatSpec.run(FlatSpec.scala:1683)
[info] at org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:462)
[info] at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:671)
[info] at sbt.TestRunner.runTest$1(TestFramework.scala:76)
[info] at sbt.TestRunner.run(TestFramework.scala:85)
[info] at sbt.TestFramework$$anon$2$$anonfun$$init$$1$$anonfun$apply$8.apply(TestFramework.scala:202)
[info] at sbt.TestFramework$$anon$2$$anonfun$$init$$1$$anonfun$apply$8.apply(TestFramework.scala:202)
[info] at sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:185)
[info] at sbt.TestFramework$$anon$2$$anonfun$$init$$1.apply(TestFramework.scala:202)
[info] at sbt.TestFramework$$anon$2$$anonfun$$init$$1.apply(TestFramework.scala:202)
[info] at sbt.TestFunction.apply(TestFramework.scala:207)
[info] at sbt.Tests$$anonfun$9.apply(Tests.scala:216)
[info] at sbt.Tests$$anonfun$9.apply(Tests.scala:216)
[info] at sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44)
[info] at sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44)
[info] at sbt.std.Transform$$anon$4.work(System.scala:63)
[info] at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
[info] at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
[info] at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
[info] at sbt.Execute.work(Execute.scala:235)
[info] at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
[info] at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
[info] at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
[info] at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
[info] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[info] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[info] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[info] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[info] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[info] at java.lang.Thread.run(Thread.java:745)
[info] Stack trace from the attempt to load the library as a resource:
[info] java.lang.UnsatisfiedLinkError: Native Library /tmp/libJOCL_0_1_9-linux-x86_64.so already loaded in another classloader
[info] at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1903)
[info] at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1822)
[info] at java.lang.Runtime.load0(Runtime.java:809)
[info] at java.lang.System.load(System.java:1086)
[info] at org.jocl.LibUtils.loadLibraryResource(LibUtils.java:188)
[info] at org.jocl.LibUtils.loadLibrary(LibUtils.java:91)
[info] at org.jocl.CL.<clinit>(CL.java:47)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextDescription$.enumerate(CLContextDescription.scala:44)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsManager$.contextsDescriptions$lzycompute(CLContextsManager.scala:6)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsManager$.contextsDescriptions(CLContextsManager.scala:6)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsManager$.createCpuContext(CLContextsManager.scala:9)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsCache$.cpuContext$lzycompute(CLContextsCache.scala:24)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsCache$.cpuContext(CLContextsCache.scala:24)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsCache$.withCpuContext(CLContextsCache.scala:28)
[info] at pl.tarsa.sortalgobox.opencl.common.CpuSort.sort(CpuSort.scala:34)
[info] at pl.tarsa.sortalgobox.opencl.common.CpuSort.sort(CpuSort.scala:32)
[info] at pl.tarsa.sortalgobox.sorts.SortChecker.forEmptyArray(SortChecker.scala:31)
[info] at pl.tarsa.sortalgobox.opencl.CpuMergeSortSpec$$anonfun$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(CpuMergeSortSpec.scala:32)
[info] at pl.tarsa.sortalgobox.tests.CommonUnitSpecBase.guardedOpenCLTest(CommonUnitSpecBase.scala:40)
[info] at pl.tarsa.sortalgobox.opencl.CpuMergeSortSpec$$anonfun$1.apply$mcV$sp(CpuMergeSortSpec.scala:31)
[info] at pl.tarsa.sortalgobox.opencl.CpuMergeSortSpec$$anonfun$1.apply(CpuMergeSortSpec.scala:31)
[info] at pl.tarsa.sortalgobox.opencl.CpuMergeSortSpec$$anonfun$1.apply(CpuMergeSortSpec.scala:31)
[info] at org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)
[info] at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
[info] at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
[info] at org.scalatest.Transformer.apply(Transformer.scala:22)
[info] at org.scalatest.Transformer.apply(Transformer.scala:20)
[info] at org.scalatest.FlatSpecLike$$anon$1.apply(FlatSpecLike.scala:1647)
[info] at org.scalamock.scalatest.AbstractMockFactory$$anonfun$withFixture$1.apply(AbstractMockFactory.scala:35)
[info] at org.scalamock.scalatest.AbstractMockFactory$$anonfun$withFixture$1.apply(AbstractMockFactory.scala:34)
[info] at org.scalamock.MockFactoryBase$class.withExpectations(MockFactoryBase.scala:41)
[info] at pl.tarsa.sortalgobox.tests.CommonUnitSpecBase.withExpectations(CommonUnitSpecBase.scala:28)
[info] at org.scalamock.scalatest.AbstractMockFactory$class.withFixture(AbstractMockFactory.scala:34)
[info] at pl.tarsa.sortalgobox.tests.CommonUnitSpecBase.withFixture(CommonUnitSpecBase.scala:28)
[info] at org.scalatest.FlatSpecLike$class.invokeWithFixture$1(FlatSpecLike.scala:1644)
[info] at org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala:1656)
[info] at org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala:1656)
[info] at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
[info] at org.scalatest.FlatSpecLike$class.runTest(FlatSpecLike.scala:1656)
[info] at org.scalatest.FlatSpec.runTest(FlatSpec.scala:1683)
[info] at org.scalatest.FlatSpecLike$$anonfun$runTests$1.apply(FlatSpecLike.scala:1714)
[info] at org.scalatest.FlatSpecLike$$anonfun$runTests$1.apply(FlatSpecLike.scala:1714)
[info] at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:413)
[info] at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401)
[info] at scala.collection.immutable.List.foreach(List.scala:381)
[info] at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
[info] at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:390)
[info] at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:427)
[info] at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401)
[info] at scala.collection.immutable.List.foreach(List.scala:381)
[info] at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
[info] at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:396)
[info] at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:483)
[info] at org.scalatest.FlatSpecLike$class.runTests(FlatSpecLike.scala:1714)
[info] at org.scalatest.FlatSpec.runTests(FlatSpec.scala:1683)
[info] at org.scalatest.Suite$class.run(Suite.scala:1424)
[info] at org.scalatest.FlatSpec.org$scalatest$FlatSpecLike$$super$run(FlatSpec.scala:1683)
[info] at org.scalatest.FlatSpecLike$$anonfun$run$1.apply(FlatSpecLike.scala:1760)
[info] at org.scalatest.FlatSpecLike$$anonfun$run$1.apply(FlatSpecLike.scala:1760)
[info] at org.scalatest.SuperEngine.runImpl(Engine.scala:545)
[info] at org.scalatest.FlatSpecLike$class.run(FlatSpecLike.scala:1760)
[info] at org.scalatest.FlatSpec.run(FlatSpec.scala:1683)
[info] at org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:462)
[info] at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:671)
[info] at sbt.TestRunner.runTest$1(TestFramework.scala:76)
[info] at sbt.TestRunner.run(TestFramework.scala:85)
[info] at sbt.TestFramework$$anon$2$$anonfun$$init$$1$$anonfun$apply$8.apply(TestFramework.scala:202)
[info] at sbt.TestFramework$$anon$2$$anonfun$$init$$1$$anonfun$apply$8.apply(TestFramework.scala:202)
[info] at sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:185)
[info] at sbt.TestFramework$$anon$2$$anonfun$$init$$1.apply(TestFramework.scala:202)
[info] at sbt.TestFramework$$anon$2$$anonfun$$init$$1.apply(TestFramework.scala:202)
[info] at sbt.TestFunction.apply(TestFramework.scala:207)
[info] at sbt.Tests$$anonfun$9.apply(Tests.scala:216)
[info] at sbt.Tests$$anonfun$9.apply(Tests.scala:216)
[info] at sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44)
[info] at sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44)
[info] at sbt.std.Transform$$anon$4.work(System.scala:63)
[info] at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
[info] at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
[info] at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
[info] at sbt.Execute.work(Execute.scala:235)
[info] at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
[info] at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
[info] at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
[info] at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
[info] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[info] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[info] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[info] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[info] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[info] at java.lang.Thread.run(Thread.java:745)
[info] ---(end of nested stack traces)---
[info] at org.jocl.LibUtils.loadLibrary(LibUtils.java:122)
[info] at org.jocl.CL.<clinit>(CL.java:47)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextDescription$.enumerate(CLContextDescription.scala:44)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsManager$.contextsDescriptions$lzycompute(CLContextsManager.scala:6)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsManager$.contextsDescriptions(CLContextsManager.scala:6)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsManager$.createCpuContext(CLContextsManager.scala:9)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsCache$.cpuContext$lzycompute(CLContextsCache.scala:24)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsCache$.cpuContext(CLContextsCache.scala:24)
[info] at pl.tarsa.sortalgobox.opencl.common.CLContextsCache$.withCpuContext(CLContextsCache.scala:28)
[info] at pl.tarsa.sortalgobox.opencl.common.CpuSort.sort(CpuSort.scala:34)
Those errors don't appear for tests in first module/ subproject depending on JOCL. Ie when I do "./activator test" then OpenCL tests from some (first tested) module work and all other don't. When I do "./activator" to spawn SBT console and then run "test" multiple times then for the first time it behaves like ordinary "./activator test" but for next test runs all OpenCL tests fails with UnsatisfiedLinkError.
Here's my build file: https://github.com/tarsa/SortAlgoBox/blob/4a041d93beb572a6dcce100780bc675d46d814f3/project/MainBuild.scala
According to this answer: https://stackoverflow.com/a/23157190/492749 SBT uses some magic classloaders and renames native libraries for each such classloader. The problem is that JOCL unpacks the native libraries during loading of some Java class and the resulting filename and location is always the same. In other words: SBT's magic doesn't play well with JOCL magic.
What would be your solution?
PS: tests work well when executed from within IntelliJ IDEA - probably IDEA doesn't use the classloader magic.
According to this answer: https://stackoverflow.com/a/23157190/492749 SBT uses some magic classloaders and renames native libraries for each such classloader. The problem is that JOCL unpacks the native libraries during loading of some Java class and the resulting filename and location is always the same. In other words: SBT's magic doesn't play well with JOCL magic.
This didn't happen automatically for me; I think it's only used when loading SBT plugins. I had to adapt the SBT classloader:
// adapted from sbt.classpath.NativeCopyLoader
package scalan.compilation.lms
import java.io.File
import java.net.{URLClassLoader, URL}
import java.nio.file.Files
/**
* Loads native libraries from a temporary location in order to work around the jvm native library uniqueness restriction.
*
* The loader will provide native libraries listed in `explicitLibraries` and on `searchPaths` by copying them to `tempDirectory`.
*/
class NativeCopyLoader(explicitLibraries: Seq[File], searchPaths: Seq[File], urls: Array[URL], parent: ClassLoader) extends URLClassLoader(urls, parent) {
private[this] val mapped = new collection.mutable.HashMap[String, String]
private[this] val tempDirectory = Files.createTempDirectory("native-library-copies").toFile
tempDirectory.deleteOnExit()
override protected def findLibrary(name: String): String =
synchronized { mapped.getOrElseUpdate(name, findLibrary0(name)) }
private[this] def findLibrary0(name: String): String = {
val mappedName = System.mapLibraryName(name)
val explicit = explicitLibraries.filter(_.getName == mappedName).toStream
val search = searchPaths.toStream flatMap relativeLibrary(mappedName)
(explicit ++ search).headOption.map(copy).orNull
}
private[this] def relativeLibrary(mappedName: String)(base: File): Seq[File] = {
val f = new File(base, mappedName)
if (f.isFile) f :: Nil else Nil
}
private[this] def copy(f: File): String = {
val target = new File(tempDirectory, f.getName)
Files.copy(f.toPath, target.toPath)
target.getAbsolutePath
}
}
And then make sure it's used when loading the classes which load the native libraries. This may need modification to work with JOCL magic, however.
How can the classpath used for run task be displayed under SBT 0.13?
I have found some info here https://groups.google.com/forum/#!msg/simple-build-tool/0rhVRPnjyZU/DOYAd14gh1wJ:
I was dumping my classpaths as a way to troubleshoot my build recently and maybe this task can help you too:
lazy val printClasspath = task {
this.runClasspath.getPaths.foreach(println);
None
}
runClasspath is a PathFinder [1] instance and you can interrogate it even further. I guess building a ':'-separated list of those paths will be easy.
I don't understand where and how I should use this tip. Please advise.
If I type this in the sbt shell:
inspect run
I see, among other output:
[info] Dependencies:
[info] runtime:fullClasspath
So then if I type:
show runtime:fullClasspath
I get output like:
List(
Attributed(/Users/tisue/Dropbox/repos/euler/target/scala-2.10/classes),
Attributed(/Users/tisue/.sbt/boot/scala-2.10.3/lib/scala-library.jar))
Which is probably what you were looking for?
You can also get it in a colon-separated form suitable for use with java -classpath on the command line:
export runtime:fullClasspath
which prints e.g.:
/Users/tisue/Dropbox/repos/euler/target/scala-2.10/classes:/Users/tisue/.sbt/boot/scala-2.10.3/lib/scala-library.jar
tl;dr Use last run or write a custom task.
last run
With last run you should be presented with the entire classpath:
[info] Running main.Main
[debug] Waiting for threads to exit or System.exit to be called.
[debug] Classpath:
[debug] /Users/jacek/work/ingrifo/dictionary-spray/target/scala-2.11/classes
[debug] /Users/jacek/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.4.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-can_2.11/bundles/spray-can_2.11-1.3.2.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-io_2.11/bundles/spray-io_2.11-1.3.2.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-util_2.11/bundles/spray-util_2.11-1.3.2.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-http_2.11/bundles/spray-http_2.11-1.3.2.jar
[debug] /Users/jacek/.ivy2/cache/org.parboiled/parboiled-scala_2.11/bundles/parboiled-scala_2.11-1.1.6.jar
[debug] /Users/jacek/.ivy2/cache/org.parboiled/parboiled-core/bundles/parboiled-core-1.1.6.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-routing_2.11/bundles/spray-routing_2.11-1.3.2.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-httpx_2.11/bundles/spray-httpx_2.11-1.3.2.jar
[debug] /Users/jacek/.ivy2/cache/org.scala-lang.modules/scala-xml_2.11/bundles/scala-xml_2.11-1.0.2.jar
[debug] /Users/jacek/.ivy2/cache/org.jvnet.mimepull/mimepull/jars/mimepull-1.9.4.jar
[debug] /Users/jacek/.ivy2/cache/com.chuusai/shapeless_2.11/jars/shapeless_2.11-1.2.4.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-json_2.11/bundles/spray-json_2.11-1.3.1.jar
[debug] /Users/jacek/.ivy2/cache/com.typesafe.akka/akka-actor_2.11/jars/akka-actor_2.11-2.3.6.jar
[debug] /Users/jacek/.ivy2/cache/com.typesafe/config/bundles/config-1.2.1.jar
[debug] Waiting for thread run-main-0 to terminate.
[debug] Thread run-main-0 exited.
[debug] Waiting for thread default-akka.actor.default-dispatcher-4 to terminate.
Custom task to dump CLASSPATH
If you need to see what the run task depends on, use inspect.
[fullclasspath]> inspect run
[info] Input task: Unit
[info] Description:
[info] Runs a main class, passing along arguments provided on the command line.
[info] Provided by:
[info] {file:/Users/jacek/sandbox/so/fullClasspath/}fullclasspath/compile:run
[info] Defined at:
[info] (sbt.Defaults) Defaults.scala:704
[info] Dependencies:
[info] compile:run::streams
[info] runtime:fullClasspath
[info] compile:run::runner
[info] compile:run::mainClass
[info] Delegates:
[info] compile:run
[info] *:run
[info] {.}/compile:run
[info] {.}/*:run
[info] */compile:run
[info] */*:run
[info] Related:
[info] test:run
In Dependencies there's the runtime:fullClasspath setting which means that run depends on its value.
According to SBT help, fullClasspath is...
[fullclasspath]> help fullClasspath
The exported classpath, consisting of build products and unmanaged and managed, internal and external dependencies.
You simply need to parse the value of the runtime:fullClasspath setting.
[fullclasspath]> show runtime:fullClasspath
[info] Updating {file:/Users/jacek/sandbox/so/fullClasspath/}fullclasspath...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] List(Attributed(/Users/jacek/sandbox/so/fullClasspath/target/scala-2.10/classes), Attributed(/Users/jacek/.sbt/boot/scala-2.10.3/lib/scala-library.jar))
[success] Total time: 0 s, completed Feb 13, 2014 1:27:38 AM
To have a more parsable output, use the following task that reads fullClasspath as defined for the runtime scope (Runtime in Scala/SBT code):
lazy val printClasspath = taskKey[Unit]("Dump classpath")
printClasspath := {
(fullClasspath in Runtime value) foreach {
e => println(e.data)
}
}
Unfortunatelly, the Runtime configuration is hardcoded and think an input task to accept a configuration would make it so much better.
or directly from the bash , dash , sh or whatever shell:
sbt 'inspect run' 'show runtime:fullClasspath'
and
sbt "inspect run" "show runtime:fullClasspath"
for Windows command line.
Add the line lazy val printClasspath ... in your build.sbt file.
Then at the command line run:
sbt printClasspath
I run the following command for the example graniteds-tutorial-data in the GraniteDS 3.0.1 GA github repo, but get the error trace given at the bottom of this post,
mvn clean install asciidoctor:process-asciidoc -Dserver=ejb -Dclient=flex
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR] The project org.graniteds.tutorials:tutorial-data-client-flex:1.0-SNAPSHOT (C:\Documents and Settings\463072\FreshSpaceJuno\graniteds-tutorial-data\client-flex\pom.xml) has 2 errors
[ERROR] Unresolveable build extension: Plugin org.sonatype.flexmojos:flexmojos-maven-plugin:4.2-beta or one of its dependencies could not be resolved: The following artifacts could not be resolved:
com.adobe.flex.compiler:saxon9:jar:4.5.1.21328, com.adobe.flex.compiler:xalan:jar:4.5.1.21328: Could not transfer artifact com.adobe.flex.compiler:saxon9:jar:4.5.1.21328 from/to flex-mojos-plugin-repository (http://repository.sonatype.org/content/groups/flexgroup/): GET request of: com/adobe/flex/compiler/saxon9/4.5.1.21328/saxon9-4.5.1.21328.jar from flex-mojos-plugin-repository failed: Premature end of Content-Length delimited message body (expected: 5024396; received: 3576621 -> [Help 2]
[ERROR] Unknown packaging: swf # line 17, column 16
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException
Any help on how to resolve this will be really appreciated. I am trying to port my application with the GraniteDS 2.0.3 to the latest 3.0.1. Also, are there any examples of a Flex EJB example using GraniteDS 3.0.1?
This is the log after I made the change you suggested.
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for org.graniteds.tutorials:tutorial-data-server-model:jar:1.0-SNAPSHOT
[WARNING] 'parent.relativePath' points at org.graniteds.tutorials:tutorial-data instead of org.graniteds.tutorials:tutorial-parent, please verify your project structure # line 28, column 13
[WARNING]
[WARNING] Some problems were encountered while building the effective model for org.graniteds.tutorials:tutorial-data-client-flex:swf:1.0-SNAPSHOT
[WARNING] 'parent.relativePath' points at org.graniteds.tutorials:tutorial-data instead of org.graniteds.tutorials:tutorial-parent-client-flex, please verify your project structure # line 9, column 13
[WARNING] 'build.plugins.plugin.version' for org.sonatype.flexmojos:flexmojos-maven-plugin is missing. # org.graniteds.tutorials:tutorial-parent-client-flex:3.0.1.GA, C:\Documents and Settings\463072\.m2\repository\org\graniteds\tutorials\tutorial-parent-client-flex\3.0.1.GA\tutorial-parent-client-flex-3.0.1.GA.pom, line 67, column 21
[WARNING] 'dependencies.dependency.scope' for com.adobe.flex.framework:spark:swc must be one of [provided, compile, runtime, test, system] but is 'theme'. # org.graniteds.tutorials:tutorial-parent-client-flex:3.0.1.GA, C:\Documents and Settings\463072\.m2\repository\org\graniteds\tutorials\tutorial-parent-client-flex\3.0.1.GA\tutorial-parent-client-flex-3.0.1.GA.pom, line 33, column 20
[WARNING] 'dependencies.dependency.scope' for org.graniteds:granite-client-flex:swc must be one of [provided, compile, runtime, test, system] but is 'internal'. # org.graniteds.tutorials:tutorial-parent-client-flex:3.0.1.GA, C:\Documents and Settings\463072\.m2\repository\org\graniteds\tutorials\tutorial-parent-client-flex\3.0.1.GA\tutorial-parent-client-flex-3.0.1.GA.pom, line 49, column 20
[WARNING]
[WARNING] Some problems were encountered while building the effective model for org.graniteds.tutorials:tutorial-data-server-ejb:war:1.0-SNAPSHOT
[WARNING] 'parent.relativePath' points at org.graniteds.tutorials:tutorial-data instead of org.graniteds.tutorials:tutorial-parent-server-ejb, please verify your project structure # line 28, column 13
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. # org.graniteds.tutorials:tutorial-parent-server-base:3.0.1.GA, C:\Documents and Settings\463072\.m2\repository\org\graniteds\tutorials\tutorial-parent-server-base\3.0.1.GA\tutorial-parent-server-base-3.0.1.GA.pom, line 37, column 21
[WARNING] 'build.plugins.plugin.version' for org.wildfly.plugins:wildfly-maven-plugin is missing. # org.graniteds.tutorials:tutorial-parent-server-base:3.0.1.GA, C:\Documents and Settings\463072\.m2\repository\org\graniteds\tutorials\tutorial-parent-server-base\3.0.1.GA\tutorial-parent-server-base-3.0.1.GA.pom, line 84, column 21
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-war-plugin is missing. # org.graniteds.tutorials:tutorial-parent-server-base:3.0.1.GA, C:\Documents and Settings\463072\.m2\repository\org\graniteds\tutorials\tutorial-parent-server-base\3.0.1.GA\tutorial-parent-server-base-3.0.1.GA.pom, line 46, column 21
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] GraniteDS Data Tutorial - Server Model
[INFO] GraniteDS Data Tutorial - Flex Client
[INFO] GraniteDS Data Tutorial - EJB Server
[INFO] GraniteDS Data Tutorial
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building GraniteDS Data Tutorial - Server Model 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
.
.
.
Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) # tutorial-data-server-model ---
.
.
.
Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler-manager/1.9.1/plexus-compiler-manager-1.9.1.jar
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
[INFO] Compiling 3 source files to C:\Documents and Settings\463072\FreshSpaceJuno\graniteds-tutorial-data\server-model\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) # tutorial-data-server-model ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\Documents and Settings\463072\FreshSpaceJuno\graniteds-tutorial-data\server-model\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) # tutorial-data-server-model ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) # tutorial-data-server-model ---
Downloading: http://repository.sonatype.org/content/groups/flexgroup/org/apache/maven/surefire/surefire-booter/2.12.4/surefire-booter-2.12.4.pom
Downloading: http://dl.bintray.com/graniteds/tutorial-dependencies/org/apache/maven/surefire/surefire-booter/2.12.4/surefire-booter-2.12.4.pom
.
.
[INFO] Installing C:\Documents and Settings\463072\FreshSpaceJuno\graniteds-tutorial-data\server-model\pom.xml to C:\Documents and Settings\463072\.m2\repository\org\graniteds\tutorials\tutorial-data-server-model\1.0-SNAPSHOT\tutorial-data-server-model-1.0-SNAPSHOT.pom
[INFO]
[INFO] --- asciidoctor-maven-plugin:0.1.4:process-asciidoc (default-cli) # tutorial-data-server-model ---
Downloading: http://repository.sonatype.org/content/groups/flexgroup/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.pom
Downloading: http://dl.bintray.com/graniteds/tutorial-dependencies/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.pom
.
.
.
Downloaded: http://repo.maven.apache.org/maven2/org/graniteds/granite-client-flex45-advanced/3.0.1.GA/granite-client-flex45-advanced-3.0.1.GA.swc (366 KB at 97.0 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] GraniteDS Data Tutorial - Server Model ............ SUCCESS [7:41.452s]
[INFO] GraniteDS Data Tutorial - Flex Client ............. FAILURE [1:18.299s]
[INFO] GraniteDS Data Tutorial - EJB Server .............. SKIPPED
[INFO] GraniteDS Data Tutorial ........................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9:08.939s
[INFO] Finished at: Thu Jan 23 12:00:48 IST 2014
[INFO] Final Memory: 25M/59M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project tutorial-data-client-flex: Could not resolve dependencies for project org.graniteds.tutorials:tutorial-data-client-flex:swf:1.0-SNAPSHOT: Could not transfer artifact com.adobe.flex.framework:framework:zip:configs:4.5.1.21328 from/to flex-mojos-repository (http://repository.sonatype.org/content/groups/flexgroup/): Checksum validation failed, expected 410a3bcaceb1ea1960b2521818dc7ab9fac35aef but is 5359ccaf2d93e09ff2ec6fffe0648c611f42314b -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :tutorial-data-client-flex
Could you try renaming temporarily your .m2 to .m2.bak so we can make sure that this is not just an issue with your local repository?
are there any examples of a Flex EJB example using GraniteDS 3.0.1?
Yes, the one you are trying to launch.
Thanks.
I have a sbt project that was working fine but after a reload stopped loading the artifacts. An update resolves the dependencies properly but for some reasons now doesn't include the libraries in the project as can be seen in the following show update (note no artifacts for many spray-io modules). Any ideas how to resolve this?
> show update
[info] Updating {file:/Users/nnovod/LIMStales/}default-6a103f...
[info] Resolving org.scala-lang#scala-library;2.10.2 ...
[info] Resolving com.typesafe.akka#akka-actor_2.10;2.1.4 ...
[info] Resolving com.typesafe#config;1.0.0 ...
[info] Resolving io.spray#spray-can;1.1-M8 ...
[info] Resolving io.spray#spray-io;1.1-M8 ...
[info] Resolving io.spray#spray-util;1.1-M8 ...
[info] Resolving io.spray#spray-http;1.1-M8 ...
[info] Resolving org.parboiled#parboiled-scala_2.10;1.1.5 ...
[info] Resolving org.parboiled#parboiled-core;1.1.5 ...
[info] Resolving io.spray#spray-routing;1.1-M8 ...
[info] Resolving io.spray#spray-httpx;1.1-M8 ...
[info] Resolving org.jvnet.mimepull#mimepull;1.9.2 ...
[info] Resolving com.chuusai#shapeless_2.10;1.2.4 ...
[info] Resolving com.googlecode.concurrentlinkedhashmap#concurrentlinkedhashmap-lru;1.3.2 ...
[info] Resolving io.spray#spray-json_2.10;1.2.5 ...
[info] Resolving org.apache.poi#poi;3.9 ...
[info] Resolving commons-codec#commons-codec;1.5 ...
[info] Resolving org.apache.poi#poi-ooxml;3.9 ...
[info] Resolving org.apache.poi#poi-ooxml-schemas;3.9 ...
[info] Resolving org.apache.xmlbeans#xmlbeans;2.3.0 ...
[info] Resolving stax#stax-api;1.0.1 ...
[info] Resolving dom4j#dom4j;1.6.1 ...
[info] Resolving xml-apis#xml-apis;1.0.b2 ...
[info] Resolving io.spray#spray-testkit;1.1-M8 ...
[info] Resolving org.specs2#specs2_2.10;1.14 ...
[info] Resolving org.specs2#specs2-scalaz-core_2.10;7.0.0 ...
[info] Resolving org.specs2#specs2-scalaz-concurrent_2.10;7.0.0 ...
[info] Resolving org.specs2#scalaz-effect_2.10;7.0.0 ...
[info] Resolving org.specs2#scalaz-core_2.10;7.0.0 ...
[info] Resolving org.scalatest#scalatest_2.10;1.9.1 ...
[info] Resolving org.scala-lang#scala-actors;2.10.0 ...
[info] Resolving org.scala-lang#scala-reflect;2.10.0 ...
[info] Done updating.
[info] Update report:
[info] Resolve time: 1834 ms, Download time: 81 ms, Download size: 0 bytes
[info] compile:
[info] org.scala-lang:scala-library:2.10.2: (Artifact(scala-library,jar,jar,None,List(),None,Map()),/Users/nnovod/.sbt/boot/scala-2.10.2/lib/scala-library.jar)
[info] com.typesafe.akka:akka-actor_2.10:2.1.4: (Artifact(akka-actor_2.10,bundle,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/com.typesafe.akka/akka-actor_2.10/bundles/akka-actor_2.10-2.1.4.jar)
[info] com.typesafe:config:1.0.0: (Artifact(config,bundle,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/com.typesafe/config/bundles/config-1.0.0.jar)
[info] io.spray:spray-can:1.1-M8:
[info] io.spray:spray-io:1.1-M8:
[info] io.spray:spray-util:1.1-M8:
[info] io.spray:spray-http:1.1-M8:
[info] org.parboiled:parboiled-scala_2.10:1.1.5: (Artifact(parboiled-scala_2.10,bundle,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/org.parboiled/parboiled-scala_2.10/bundles/parboiled-scala_2.10-1.1.5.jar)
[info] org.parboiled:parboiled-core:1.1.5: (Artifact(parboiled-core,bundle,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/org.parboiled/parboiled-core/bundles/parboiled-core-1.1.5.jar)
[info] io.spray:spray-routing:1.1-M8:
[info] io.spray:spray-httpx:1.1-M8:
[info] org.jvnet.mimepull:mimepull:1.9.2: (Artifact(mimepull,jar,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/org.jvnet.mimepull/mimepull/jars/mimepull-1.9.2.jar)
[info] com.chuusai:shapeless_2.10:1.2.4: (Artifact(shapeless_2.10,jar,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/com.chuusai/shapeless_2.10/jars/shapeless_2.10-1.2.4.jar)
[info] com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.3.2: (Artifact(concurrentlinkedhashmap-lru,jar,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/com.googlecode.concurrentlinkedhashmap/concurrentlinkedhashmap-lru/jars/concurrentlinkedhashmap-lru-1.3.2.jar)
[info] io.spray:spray-json_2.10:1.2.5: (Artifact(spray-json_2.10,jar,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/io.spray/spray-json_2.10/jars/spray-json_2.10-1.2.5.jar)
[info] org.apache.poi:poi:3.9: (Artifact(poi,jar,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/org.apache.poi/poi/jars/poi-3.9.jar)
[info] commons-codec:commons-codec:1.5: (Artifact(commons-codec,jar,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/commons-codec/commons-codec/jars/commons-codec-1.5.jar)
[info] org.apache.poi:poi-ooxml:3.9: (Artifact(poi-ooxml,jar,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/org.apache.poi/poi-ooxml/jars/poi-ooxml-3.9.jar)
[info] org.apache.poi:poi-ooxml-schemas:3.9: (Artifact(poi-ooxml-schemas,jar,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/org.apache.poi/poi-ooxml-schemas/jars/poi-ooxml-schemas-3.9.jar)
[info] org.apache.xmlbeans:xmlbeans:2.3.0: (Artifact(xmlbeans,jar,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/org.apache.xmlbeans/xmlbeans/jars/xmlbeans-2.3.0.jar)
[info] stax:stax-api:1.0.1: (Artifact(stax-api,jar,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/stax/stax-api/jars/stax-api-1.0.1.jar)
[info] dom4j:dom4j:1.6.1: (Artifact(dom4j,jar,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/dom4j/dom4j/jars/dom4j-1.6.1.jar)
[info] xml-apis:xml-apis:1.0.b2: (Artifact(xml-apis,jar,jar,None,ArraySeq(master),None,Map()),/Users/nnovod/.ivy2/cache/xml-apis/xml-apis/jars/xml-apis-1.0.b2.jar)
I deleted all of spray.io in the .ivy2 cache (rm -r .ivy2/cache/io.spray) and then did a new update and that fixed things.
The Android and the Java Version is working fine but when i try to comile the HTML Version I get only errors.
I did it by selecting maven build... and entering integration-test in the goals text field (like adviced in the getting started guide).
But I get only following errors:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building PlayN Hello HTML 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-enforcer-plugin:1.0:enforce (enforce-maven) # playn-hello-html ---
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) # playn-hello-html ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory F:\Documents\Programmieren\PlayN\game\html\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3:compile (default-compile) # playn-hello-html ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) # playn-hello-html ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory F:\Documents\Programmieren\PlayN\game\html\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3:testCompile (default-testCompile) # playn-hello-html ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.10:test (default-test) # playn-hello-html ---
[INFO] Surefire report directory: F:\Documents\Programmieren\PlayN\game\html\target\surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] --- gwt-maven-plugin:2.4.0:compile (default) # playn-hello-html ---
[ERROR] Fehler: Hauptklasse com.google.gwt.dev.Compiler konnte nicht gefunden oder geladen werden
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.527s
[INFO] Finished at: Fri Nov 02 10:31:17 CET 2012
[INFO] Final Memory: 11M/28M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:gwt-maven-plugin:2.4.0:compile (default) on project playn-hello-html: Command [[
[ERROR] C:\Program Files (x86)\Java\jre7\bin\java -Xmx256m -classpath F:\Documents\Programmieren\PlayN\game\html\src\main\java;F:\Documents\Programmieren\PlayN\game\html\src\main\resources;F:\Documents\Programmieren\PlayN\game\html\target\classes;C:\Users\\.m2\repository\com\googlecode\playn\playn-hello-core\1.0-SNAPSHOT\playn-hello-core-1.0-SNAPSHOT.jar;C:\Users\\.m2\repository\com\googlecode\playn\playn-core\1.4\playn-core-1.4.jar;C:\Users\\.m2\repository\com\samskivert\pythagoras\1.2\pythagoras-1.2.jar;C:\Users\
\.m2\repository\com\googlecode\playn\playn-html\1.4\playn-html-1.4.jar;C:\Users\\.m2\repository\com\googlecode\playn\playn-webgl\1.4\playn-webgl-1.4.jar;C:\Users\\.m2\repository\com\google\gwt\gwt-user\2.4.0\gwt-user-2.4.0.jar;C:\Users\\.m2\repository\javax\validation\validation-api\1.0.0.GA\validation-api-1.0.0.GA.jar;C:\Users\\.m2\repository\javax\validation\validation-api\1.0.0.GA\validation-api-1.0.0.GA-sources.jar;C:\Users\\.m2\repository\com\allen-sauer\gwt\voices\gwt-voices\2.1.8\gwt-voices-2.1.8.jar;C:\Users\\.m2\repository\com\google\gwt\gwt-user\2.4.0\gwt-user-2.4.0.jar;C:\Users\\.m2\repository\javax\validation\validation-api\1.0.0.GA\validation-api-1.0.0.GA.jar;C:\Users\\.m2\repository\javax\validation\validation-api\1.0.0.GA\validation-api-1.0.0.GA-sources.jar;C:\Users\\.m2\repository\com\google\gwt\gwt-dev\2.4.0\gwt-dev-2.4.0.jar com.google.gwt.dev.Compiler -gen F:\Documents\Programmieren\PlayN\game\html\target\.generated -logLevel INFO -style PRETTY -war F:\Documents\Programmieren\PlayN\game\html\target\playn-hello-html-1.0-SNAPSHOT -localWorkers 8 -XdisableClassMetadata -XdisableCastChecking -XdisableRunAsync playn.sample.hello.HelloGame
[ERROR] ]] failed with status 1
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
When I try Google -> GWT Compile (as mentioned somewhere here on Stackoverflow) it only says that this isn't a GWT Project!
What can I do to get the HTML Version working?
Regards
Fleckdalm
try this:
mvn clean -Phtml package