JNotify阻止执行Play应用程序

时间:2014-08-07 20:06:03

标签: playframework playframework-2.0 playframework-2.3

在升级之前,我们的应用程序是在v2.1.1,我收到有关缺少JNotify的警告。据我所知,没有伤害没有犯规。但是,在迁移到v2.3.1之后,警告已变为显示停止异常。我编译然后尝试运行并收到以下输出:

java.lang.NoClassDefFoundError: Could not initialize class net.contentobjects.jnotify.JNotify
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at play.PlayReloader$$anon$1$$anon$7.removeWatch(PlayReloader.scala:113)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at play.PlayReloader$$anon$1.liftedTree1$1(PlayReloader.scala:119)
    at play.PlayReloader$$anon$1.jnotify$lzycompute(PlayReloader.scala:60)
    at play.PlayReloader$$anon$1.jnotify(PlayReloader.scala:40)
    at play.PlayReloader$$anon$1$$anonfun$10.apply(PlayReloader.scala:155)
    at play.PlayReloader$$anon$1$$anonfun$10.apply(PlayReloader.scala:155)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at play.PlayReloader$$anon$1.<init>(PlayReloader.scala:155)
    at play.PlayReloader$class.newReloader(PlayReloader.scala:24)
    at play.Play$.newReloader(Project.scala:17)
    at play.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$1.reloader$lzycompute$1(PlayRun.scala:175)
    at play.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$1.play$PlayRun$class$$anonfun$$anonfun$$reloader$1(PlayRun.scala:175)
    at play.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$1.apply(PlayRun.scala:198)
    at play.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$1.apply(PlayRun.scala:98)
    at scala.Function9$$anonfun$tupled$1.apply(Function9.scala:35)
    at scala.Function9$$anonfun$tupled$1.apply(Function9.scala:34)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
[trace] Stack trace suppressed: run last compile:run for the full output.
[error] (compile:run) java.lang.NoClassDefFoundError: Could not initialize class net.contentobjects.jnotify.JNotify

我做了一些挖掘,我知道JNotify库应该可用,因为我在activator / repository /以及user / .ivy2 / cache / repository(以及所有)中找到了一个v0.94 jar我的自定义依赖项 被拾取)。 [另外,我在一个本地Maven存储库中将它添加为Build.scala中的一个依赖项,它在编译期间似乎也没有问题。)是否有某种手动过程我错过了这是必需的?据我所知,该应用程序应该可以使用它。

(我知道在v2.3.2的发行说明中有关于JNotify的注释,但它似乎是一个不同的问题,并且在v2.3.1中没有提到关键错误。)

1 个答案:

答案 0 :(得分:2)

经过进一步调查后,这似乎是由于v2.3.1中的一个错误,已在v2.3.2中解决。错误报告在这里:https://github.com/playframework/playframework/issues/2946。该错误的显示方式与错误报告中描述的不同,但重复该错误的过程涉及一些相同的步骤。对于那些暂时使用v2.3.1的人来说,解决方法就是避免在激活器控制台中使用'reload'命令。如果需要重新加载,请退出激活器并重新启动它,因为此工作流程不会导致此问题。

编辑:发现了其他错误报告 - 其中一个描述了遇到的问题。

https://github.com/playframework/playframework/issues/3170 https://github.com/playframework/playframework/pull/2620