2

我的 lift sbt 文件中有一个 unmanagedClasspath 条目,它指向外部 java 项目的类。它编译得很好,但是当它运行时我得到一个 NoClassDefError 。下面是 sbt 条目,后面是 NoClassDefError 的一些跟踪。

非常感谢任何帮助

德斯

unmanagedClasspath in Compile += file("[Path to my project]/classes")

 ERROR n.liftweb.http.provider.HTTPProvider - Failed to Boot! Your application may not run properly
java.lang.NoClassDefFoundError: com/myproject/MyClass
    at bootstrap.liftweb.Boot.boot(Boot.scala:70) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_21]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_21]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_21]
    at java.lang.reflect.Method.invoke(Method.java:601) ~[na:1.7.0_21]
    at net.liftweb.util.ClassHelpers$$anonfun$createInvoker$1.apply(ClassHelpers.scala:364) ~[lift-util_2.9.1-2.5-RC2.jar:2.5-RC2]
    at net.liftweb.util.ClassHelpers$$anonfun$createInvoker$1.apply(ClassHelpers.scala:362) ~[lift-util_2.9.1-2.5-RC2.jar:2.5-RC2]
    at net.liftweb.http.DefaultBootstrap$$anonfun$boot$1.apply(LiftRules.scala:1999) ~[lift-webkit_2.9.1-2.5-RC2.jar:2.5-RC2]
    at net.liftweb.http.DefaultBootstrap$$anonfun$boot$1.apply(LiftRules.scala:1999) ~[lift-webkit_2.9.1-2.5-RC2.jar:2.5-RC2]
    at net.liftweb.common.Full.map(Box.scala:553) ~[lift-common_2.9.1-2.5-RC2.jar:2.5-RC2]
4

1 回答 1

5

unmanagedJars in Compile 用作 and 中相同键的基础RuntimeTest因此其内容由 继承Runtime,但情况并非如此unmanagedClasspath。这就是为什么你应该unmanagedJars尽可能选择。

您可以将文件夹显式添加到两种配置中:

val additionalClasses = file("[Path to my project]/classes")

unmanagedClasspath in Compile += additionalClasses

unmanagedClasspath in Runtime += additionalClasses

注意: sbt < 0.13 不支持valin build.sbt,因此您必须在两个设置中复制其内容,或者切换到完整的Build.scala.

有关类路径设置的作用以及它们如何在配置之间继承的更多详细信息,请参阅Classpaths 文档此 anwser 。

我想不出同时将它添加到两者的方法......

于 2013-06-05T15:43:22.670 回答