Eclipse3.4GWT1.6项目-如何从其他项目引用源代码?

Eclipse3.4GWT1.6项目-如何从其他项目引用源代码?,eclipse,gwt,Eclipse,Gwt,我在Eclipse3.4中有一个GWT1.6项目,我正在尝试引用我工作区中另一个(非GWT)项目的源代码。我已将项目添加到构建路径,但无法在托管模式下运行应用程序。当我这样做时,我会得到一个“没有可用的源代码”错误 我做了一些搜索和阅读,并尝试了其他人建议的一些事情(包括从依赖项目创建一个jar并链接到它),但坦率地说,没有任何效果 如果你真的这样做了,你能帮我做一个简单的一步一步的设置吗?我真的很感激,谢谢 GWT不知道其他代码,因为它不在项目的客户机目录中。您需要将其他代码的源路径添加到.g

我在Eclipse3.4中有一个GWT1.6项目,我正在尝试引用我工作区中另一个(非GWT)项目的源代码。我已将项目添加到构建路径,但无法在托管模式下运行应用程序。当我这样做时,我会得到一个“没有可用的源代码”错误

我做了一些搜索和阅读,并尝试了其他人建议的一些事情(包括从依赖项目创建一个jar并链接到它),但坦率地说,没有任何效果


如果你真的这样做了,你能帮我做一个简单的一步一步的设置吗?我真的很感激,谢谢

GWT不知道其他代码,因为它不在项目的客户机目录中。您需要将其他代码的源路径添加到.gwt.xml文件中。只是将其添加到xml中,如下所示

<source path="common" />

common是本例额外代码所在的目录


查看本部分的XML元素引用部分GWT项目中的客户端代码(客户端包下的类)不能引用任何不在GWT模块中的类

如果您想从GWT项目的客户端代码中引用另一个项目中的代码,则需要:

  • 确保它是“GWT安全的”,这意味着它不会引用任何没有被GWT()模拟的JRE类,也不会引用任何引用没有被模拟的JRE类的类
  • 确保所有引用的类都在GWT模块中。这意味着将MyOtherProject.gwt.xml文件放在其他项目中,所有引用的类都必须位于客户机子包下
  • 使您的GWT项目从其他项目继承。因此,将以下内容添加到GWT项目的GWT.xml模块文件中:


Boden:将以下内容添加到模块文件中

<source path=""></source>

除了您的其他来源,例如:

<source path=""></source>
<source path="com.acme.otherpackage"></source>

那么编译器就不会抱怨了


至少我是这样解决的。不确定使用path=”“是否允许包含所有内容,我假设在未指定源时它是默认值。

我有2个Eclipse项目。一个是gwt项目,另一个不是。以下是适合我的目录结构:

workspace
-- gwt-project
   -- src/main/java
      -- com.gwt.GwtProjectModule
         -- GwtProjectModule.gwt.xml
-- non-gwt-project
   -- src/main/java
      -- com.nongwt.package.that.contains.source.you.need
         -- nongwt.gwt.xml
      -- com.nongwt.package.that.contains.source.you.need.client
nongwt.gwt.xml告诉gwt查看“客户端”包的内部,下面是它的外观:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">
<module rename-to='nongwt'>
    <inherits name='com.google.gwt.user.User' />
    <source path="client" />
</module>

然后,GwtProjectModule.gwt.xml可以从nongwt继承源代码。以下是GwtProjectModule.gwt.xml内部的相关行:

<inherits name="com.nongwt.package.that.contains.source.you.need.nongwt" />

确保在eclipse中的gwt项目的类路径中包含非gwt项目。这是正常的训练;右键单击gwt项目,选择属性,选择“Java构建路径”,单击“项目”选项卡和“非gwt项目”

或者,除了在gwt项目的类路径中包含非gwt项目作为项目引用之外,还可以jar非gwt--project的内容,确保将源代码包含在jar中,然后将jar包含在gwt项目的类路径中


祝你好运

在您的gwt项目中,转到属性、Java构建路径、源代码,单击“链接源代码”,并指向您希望包含的非gwt项目源代码包。

我知道这篇文章很老,但由于我在这个问题上花了很多时间,最终找到了解决方法,我想我可以分享一下答案:

创建启动配置后,打开它运行>运行配置。。。 转到类路径选项卡并选择用户条目。添加高级>文件夹并选择其他模块项目的源文件夹。如果您在src/main/resources文件夹中分离了模块conf文件,那么您也必须添加它


应该有用

Edit:找到eclipse修复程序。运行config>Classpath>Advanced>addfolder>otherproject/src

原因:Eclipse添加了导出项目的bin文件夹。GWT需要src文件夹

详细阐述我的评论

我正在EclipseNeon上使用GWT2.8,Java1.8.092。在eclipse中引用另一个项目无法启动devmode,因为它找不到来自另一个项目的引用文件的源

工作内容:

完全切换到“ant devmode”。对build.xml进行了以下更改:

<target name="gwtc" ...>
    <java ...>
      <classpath>
        <pathelement location="src"/>
        <pathelement location="../otherproject/src"/><!-- Added -->
...
...
  <target name="devmode" ...>
    <java ...>
      <classpath>
        <pathelement location="src"/>
        <pathelement location="../otherproject/src"/><!-- Added -->

...
...
现在使用“ant”进行生产构建,或者使用“ant devmode”启动devmode

我注意到的其他事情

  • 使用已接受答案中的方法,将拾取otherproject/src/foo.gwt.xml(如果不可用,则进行投诉),并从类中拾取静态值。没有别的了。很奇怪

  • 我知道DevMode/gwtc可执行文件从它们的类路径中获取源代码。所以eclipse只需要将引用的项目添加到它们的类路径中。我没能做到这一点,但这似乎是可能的。固定见顶部


  • 这是斯文·布施贝克(必须是挪威人,哈哈!)提出的解决你问题的绝妙方案,对我有用

    在Eclipse中处理几个大型项目时,通过常用库共享和重用代码非常方便,当然也更有效。虽然这些还处于早期阶段,但它们需要进行大量更改,因此,在库每次更新时链接项目而不是创建新的jar是很方便的。 不幸的是,Eclipse中Java开发的这种标准方法并不像普通的旧Java项目那样直接有效,它总共需要三个步骤:

  • 将图书馆项目链接到所有相关项目(“项目”) 序言“->“Java构建路径”->“项目”->“添加…”)
  • 然后,添加库的客户端代码(通过将其添加为 因此,编辑应用程序的gwt.xml并添加 例如 其中Super-Lib是gwt.x的文件名