1

我有一个 GWT 项目,我想在另一个项目的服务器端使用一些类:

MyServerProject
    com.me.myserverproject.server.Horse

SomeSupportProject
    com.me.somesupportproject.server.Animal

和 MyServerProject Horse.java 看起来像:

class Horse extends Animal {
}

在 Eclipse 中,我有 MyServerProject 引用 SomeSupportProject 项目。所有编译都很好,GWT Compile 也运行良好,没有错误。

当我将 MyServerProject 部署到本地实例时,它会立即在“Animal.java”上引发 NoClassDefFoundError 错误:

java.lang.NoClassDefFoundError: com/me/somesupportproject/server/Animal
  at java.lang.ClassLoader.defineClass1(Native Method)

我在 Eclipse 项目属性中将 SomeSupportProject 标记为导出。但似乎 Animal.java 的类文件在部署时没有被导出。我们需要在这里做一些特别的事情来让它发挥作用吗?

我一定遗漏了一些非常明显的东西,因为这是非常基本的东西。我有客户端java文件被引用就好了,我认为这是更棘手的情况。但是这些都是服务器端的类,以为会更简单,

谢谢

------- 更新:项目设置 ---------------

关于我的环境的一些注意事项:

使用eclipse,两个项目并排。我没有使用 Ant 或 Maven。我已将 Eclipse 设置为自动构建,因此不会出现任何编译器错误。为了实际编译部署,我尝试右键单击“MyServerProject”,选择 Google -> GWT Compile。我将输出设置为“全部”。我没有得到任何编译错误。输出未提及任何警告。

GWT Compile 完成后,我再次右键单击该项目,选择 Run As -> Web Application。这就是为在 SomeSupportProject 项目中找到的类引发 java.lang.NoClassDefFoundError 的原因。

如果有任何细节会有所帮助,请告诉我。

--------- 最终更新:已解决 -----

在进行了更多工作之后,似乎我们无法添加项目引用并让服务器端类在部署的顶级项目中遇到。相反,我链接到 SomeSupportProject 中的“src”文件夹。这使得事情仍然可以正常编译,但是当你部署你的项目时,所有的类都没有问题。

所以这确实是一个应用程序引擎问题,应该在下面标记它。

谢谢!

4

1 回答 1

0

在进行了更多工作之后,似乎我们无法添加项目引用并让服务器端类在部署的顶级项目中遇到。相反,我链接到 SomeSupportProject 中的“src”文件夹。这使得事情仍然可以正常编译,但是当你部署你的项目时,所有的类都没有问题。

所以这确实是一个应用程序引擎问题,应该在下面标记它。

谢谢!

于 2012-11-26T03:09:40.343 回答