【问题标题】:Eclipse Rich Client Platform - Cross Platfrom DevelopmentEclipse 富客户端平台 - 跨平台开发
【发布时间】:2017-12-19 20:40:49
【问题描述】:

我已经在 OSX 上启动了一个 Eclipse RCP 项目,并希望继续使用 Windows 10 进行开发,但是当我将项目导入 Windows 时,代码中的所有 SWT 导入都显示错误,我试图下载 org.eclipse .swt 作为 Eclipse 的一个项目并将其导入所有其他项目,但是当我尝试运行该应用程序时,出现以下异常:

java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Display 在 org.eclipse.e4.ui.internal.workbench.swt.E4Application.start(E4Application.java:144) 在 org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)

我还注意到,当我尝试运行该项目时,它的引导加载程序是为 osx 而不是 windows 定义的,如下所示:

BootLoader 常量:OS=macosx、ARCH=x86_64、WS=cocoa、NL=en_IE

我想知道是否有人对如何在 Eclipse RCP 中进行跨平台开发有任何建议?

【问题讨论】:

标签: java eclipse swt eclipse-rcp


【解决方案1】:

最好的方法是使用 Maven,为每个平台定义一个特定的配置文件。 您可以尝试以下 pom 定义(这仅适用于 SWT),使其适应您的应用程序(更改某些内容并添加您的依赖项):

<?xml version="1.0" encoding="UTF-8"?>

<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>yourGroupId</groupId>
    <artifactId>YourArtifactId</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <properties>
        <swt.version>SWT_Version</swt.version>
    </properties>

    <repositories>
        <repository>
            <id>maven-eclipse-repo</id>
            <url>http://maven-eclipse.github.io/maven</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
          ....//your dependencies
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.4.3</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>win32-x86</id>
            <dependencies>
                <dependency>
                    <groupId>org.eclipse.swt</groupId>
                    <artifactId>org.eclipse.swt.win32.win32.x86</artifactId>
                    <version>${swt.version}</version>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>win32-x86-64</id>
            <dependencies>
                <dependency>
                    <groupId>org.eclipse.swt</groupId>
                    <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
                    <version>${swt.version}</version>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>linux-x86</id>
            <dependencies>
                <dependency>
                    <groupId>org.eclipse.swt</groupId>
                    <artifactId>org.eclipse.swt.gtk.linux.x86</artifactId>
                    <version>${swt.version}</version>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>linux-x86-64</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.eclipse.swt</groupId>
                    <artifactId>org.eclipse.swt.gtk.linux.x86_64</artifactId>
                    <version>${swt.version}</version>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>macosx-x86-64</id>
            <dependencies>
                <dependency>
                    <groupId>org.eclipse.swt</groupId>
                    <artifactId>org.eclipse.swt.cocoa.macosx.x86_64</artifactId>
                    <version>${swt.version}</version>
                </dependency>
            </dependencies>
        </profile>
    </profiles>

</project>

我希望这会有所帮助! ;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-27
    • 2010-10-03
    • 2010-10-09
    • 2010-11-29
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多