在32位和64位Linux系统上开发Java Eclipse项目

在32位和64位Linux系统上开发Java Eclipse项目,java,eclipse,classpath,windowbuilder,Java,Eclipse,Classpath,Windowbuilder,我有一系列相关的项目,我已经将它们置于Git控制之下(所有这些项目都在同一个工作区中,这是Git存储库的顶层),并将它们从我的桌面(32位)克隆到我的笔记本(64位),这样我就可以随时随地处理它们。工作区.metadata文件夹被排除,但项目文件夹中的所有内容都被跟踪 当我打开笔记本电脑上的克隆工作区时,出现了一个错误: Project 'project' is missing required library: '/usr/eclipse/plugins/org.eclipse.swt.gtk

我有一系列相关的项目,我已经将它们置于Git控制之下(所有这些项目都在同一个工作区中,这是Git存储库的顶层),并将它们从我的桌面(32位)克隆到我的笔记本(64位),这样我就可以随时随地处理它们。工作区
.metadata
文件夹被排除,但项目文件夹中的所有内容都被跟踪

当我打开笔记本电脑上的克隆工作区时,出现了一个错误:

Project 'project' is missing required library:
'/usr/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_3.5.2.v3557f.jar'
显然,64位的eclipse没有32位的库,但我很好奇应该如何解决这个问题

该库是作为Window Builder SWT/JFace项目模板的一部分添加的。eclipse插件文件夹中有一个
org.eclipse.swt_3.5.2.v3557f.jar
,但更改类路径以查找该文件并不起作用(奇怪的是,找不到swt)。查看SWT/JFace项目的
.classpath
文件的其余部分,这个特定的库是唯一一个平台特定的库

我将库的两个版本都放在
.classpath
中,这允许代码生成/运行,尽管我必须忽略生成路径错误,并且当我将笔记本电脑更改拉回来时,此错误将传播回我的桌面

我是否可以将笔记本电脑上的64位jar符号链接到32位名称,以便类路径可以找到库?还有其他更好的解决方案吗

更新
看起来这种类型的项目必须依赖于具体的SWT片段,所以在找到更好的解决方案之前,我将在两台机器上对有问题的片段进行符号链接,以将编译器指向正确的片段。在其他机器(尤其是Windows)上构建/运行项目将是!!有趣!!但我到那里后会搭建那座桥。

不要用整个工作区来搭建。只需对单个项目执行即可。在这里工作得很好。

您在源代码管理中到底保留了什么

最佳实践是在源存储库中只保留手写的源文件。不是二进制文件、生成的文件或IDE设置

我认为您的64位Eclipse的IDE设置与32位Eclipse不兼容有问题


只需删除工作区中的
.metadata
目录,然后重新导入此Eclipse中的所有项目

您正在开发哪种类型的项目?java项目还是插件项目

如果您正在开发插件项目,那么您的项目不应该直接依赖于具体的swt片段(例如swt.gtk、swt.win32)。swt的实际实现应该取决于主机插件“org.eclipse.swt”,即不同平台中的不同片段


如果您正在开发一个需要swt作为第三方需求的java项目。你可以为你的32位和64位Eclipse安装Eclipse Delta包。

避免平台问题,你也可以考虑Maven。使用Maven 2或3,以及可选的概要文件组合,可以非常轻松地解决平台问题。


使用几个用于Eclipse的Maven插件,Maven项目可以直接导入Eclipse。

当然,还可以将.metadata放在忽略列表中,这样您就不会在下次提交时覆盖它们。只需项目文件夹,以及第一次提交后剩下的顶级空
自述文件。因此,基本上是源代码和每个项目的配置文件
.metadata
在我注意到它有几兆字节时被抛出忽略。哦,是的,你也应该从项目目录中删除
.settings
。你应该在存储库中只保留源代码、各种xml配置以及类似的内容。只有您的代码,而不是与IDE相关的东西。此特定工作区中的所有项目在逻辑上都是相关的,但不足以成为同一个项目。我希望将它们放在一个存储库中,您可以通过将每个Eclipse项目分别添加到存储库中来实现这一点。不要添加整个工作区。回想一下我是如何将它们全部放在存储库中的(就Eclipse而言——如何手动告诉Eclipse一个项目在git控制下是另一个问题),我实际上就是这样做的。创建git文件夹并将所有项目放在git文件夹中,然后将它们全部添加到其他文件夹中。记住忽略垃圾箱文件夹。现在我们有进展了。我认为它包含如此具体的内容是很奇怪的,但我认为项目模板知道它在做什么。我从WindowBuilderSWT/JFace Java项目开始,该项目自动添加了这些库。用通用jar替换它会导致它不知道SWT是什么。@Artanis,首先SWT的实现机制决定了它不纯粹是“跨平台”的,它使用jni调用本机库。然后WindowBuilderSWT/Jface项目是一个java项目,它将所有引用的eclipse插件放入类路径中进行构建和运行。它不使用osgi来处理类路径,尽管它也需要osgi jar。因此,项目的构建和测试必须依赖于具体的swt实现。@Artanis,如果您使用WindowTester来测试rcp项目,我建议您创建junit插件测试,可以很好地处理此类问题。仔细想想,为什么要用特定于平台的路径编写类路径?如果我把它带到Windows机器上,它将无法找到任何需要运行的东西。。。该死,谷歌代码页面上的文档说类路径以C:/eclipse/plugins/