- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Eclipse 新手,我正在尝试构建混合 AWT/SWT 应用程序。这是我的代码:
public class HelloWorldSWT {
public static void main(String[] args) {
Frame frame = new Frame("My AWT Frame"); // java.awt.Frame
frame.setLayout( new BorderLayout() );
Canvas canvas = new Canvas(); // java.awt.Canvas
frame.add(canvas, BorderLayout.CENTER);
frame.setVisible(true);
Display display = new Display(); // display object to manage SWT lifecycle.
Shell swtShell = SWT_AWT.new_Shell(display, canvas);
Button m_button = new Button(swtShell, SWT.PUSH);
m_button.setText( "button" );
// invoke the AWT frame rendering by making the frame visible
// This starts the EDT
frame.setVisible(true);
// standard SWT dispatch loop
while(!swtShell.isDisposed())
{
if(!display.readAndDispatch())
display.sleep();
}
swtShell.dispose();
}
}
编译正常,但是当我在 Eclipse 中将其作为应用程序运行时,出现以下错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: sun.awt.SunToolkit.getAppContext(Ljava/lang/Object;)Lsun/awt/AppContext; at sun.awt.SunToolkit.getAppContext(Native Method) at sun.awt.SunToolkit.targetToAppContext(Unknown Source) at sun.awt.windows.WComponentPeer.postEvent(Unknown Source) at sun.awt.windows.WComponentPeer.postPaintIfNecessary(Unknown Source) at sun.awt.windows.WComponentPeer.handlePaint(Unknown Source) at sun.java2d.d3d.D3DScreenUpdateManager.repaintPeerTarget(Unknown Source) at sun.java2d.d3d.D3DScreenUpdateManager.createScreenSurface(Unknown Source) at sun.awt.windows.WComponentPeer.replaceSurfaceData(Unknown Source) at sun.awt.windows.WComponentPeer.replaceSurfaceData(Unknown Source) at sun.awt.windows.WComponentPeer.setBounds(Unknown Source) at sun.awt.windows.WWindowPeer.setBounds(Unknown Source) at sun.awt.windows.WComponentPeer.initialize(Unknown Source) at sun.awt.windows.WCanvasPeer.initialize(Unknown Source) at sun.awt.windows.WPanelPeer.initialize(Unknown Source) at sun.awt.windows.WWindowPeer.initialize(Unknown Source) at sun.awt.windows.WFramePeer.initialize(Unknown Source) at sun.awt.windows.WComponentPeer.(Unknown Source) at sun.awt.windows.WCanvasPeer.(Unknown Source) at sun.awt.windows.WPanelPeer.(Unknown Source) at sun.awt.windows.WWindowPeer.(Unknown Source) at sun.awt.windows.WFramePeer.(Unknown Source) at sun.awt.windows.WToolkit.createFrame(Unknown Source) at java.awt.Frame.addNotify(Unknown Source) at java.awt.Window.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at HelloWorldSWT.main(HelloWorldSWT.java:20)
我做错了什么?
最佳答案
从版本 3.3 开始,SWT 自动查找其所需的特定于平台的库,这些库位于 swt.jar 内(位于 JAR 内容的顶层)。因此,您所需要的只是类路径中的 swt.jar,它就可以工作了。
获得 UnsatisifiedLinkError 的一种方法是,如果您在另一个平台上使用 swt.jar —— 它们都被命名为“swt.jar”;例如,如果您下载适用于 Linux 的版本,然后尝试在 Windows 上使用它。该项目将编译正常,因为每个平台的所有 API 级代码都是相同的 Java,但运行时会失败,因为 native 库错误。
但是,由于本例中的错误发生在 AWT 中,因此可能是其他原因,与 SWT 没有直接关系。首先,确保您已下载 Windows SWT 版本。当您将其导入工作区时,它会创建一个名为 org.eclipse.swt 的 Eclipse 项目,其中包含 swt.jar。然后,您将 org.eclipse.swt 作为您的项目所需的项目,除了有效、干净的 JRE 之外,构建路径中没有其他任何内容(您可以尝试定义一个新的 [Window -> Preferences -> Java -> Installed JREs],或者只是使用您可能已安装的其他版本)。
您还可以从 shell/命令窗口测试它。转到您的项目目录。命令应该很简单:
java -cp bin;..\org.eclipse.swt\swt.jar HelloWorldSWT
我让你的代码运行(Vista-32,JDK 6_15),但窗口打开的非常小,并且不会关闭。不过我对 SWT-AWT 桥一无所知,祝你好运......
关于混合 AWT 和 SWT 时出现 Java UnsatisfiedLinkError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1242722/
我有一个旨在在 Linux 环境中运行的 java 应用程序,它是使用 Opencv 和 Eclipse - Ubuntu 14.04 开发的。它在 Eclipse 中运行良好,并在导出时生成一个 .
我有一个 Android 项目,它使用具有相互依赖关系的库: Android 应用程序依赖于以下原生库 模块 tess-2(包含 tesseract 和 leptonica) 模块 opencv4an
我正在开发一个需要使用.so库的项目(ubuntu 18.04),当我将java代码放在/src文件夹中时一切正常(我使用的是IntelliJ Idea),但是在我移动之后我的代码放入命名包(smut
我创建了一个使用 autohotkey.dll 库的 jar 文件。 Jar 在我的主电脑和笔记本电脑上运行顺利,但现在我尝试在新安装了 Windows 10 的电脑上使用它,但收到此错误: Exce
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我创建了一个使用 google or-tools 的 spring 应用程序。为此,我使用 System.loadLibrary("jniortools") 导入 jniortools。当我提供 .d
我正在尝试使用我下载的小程序。使用时出现以下错误 Can't load library 'friend'. java.lang.UnsatisfiedLinkError:no friend in ja
我知道捕获错误不是一个好的做法,但在这种情况下,这样做很重要。我正在尝试运行一个包含游戏一部分的 jar,但它给了我一个 unsatisfiedlink 错误,但这是有趣的部分:我正在使用这段代码:
我正在尝试创建Java软件,该软件允许我启动程序并通过ActiveXComponent对其进行控制。为了使用ActiveXCompnent,我下载了一个名为“ jacob-1.18”的JAR文件。当我
我已经完成了大部分GWT MVP风格的测试,而没有测试小部件。我希望能够构建更复杂的小部件并对其进行良好的测试,而无需使用GwtTestCase(缓慢)。 出于好奇,我尝试了一个非常简单的测试。给一个
我正在使用 Proycon 将 .class 反编译为 .java,在我的库目录中包含 jd-core-java-1.0.jar 文件,但是当我编译 Main 类时它抛出异常 Exception in
我正在编写一个使用JNI的程序,当我在我的计算机上运行它时它工作正常,但如果我尝试在另一台计算机上运行它,它会抛出UnsatisfiedLinkError,说它找不到依赖库。我使用 Eclipse,并
我正在使用 javacpp 从 Java 访问 cpp。 我已经尝试过文档中提供的示例 cpp代码: CompletableFuture futureInC(){ @StdFuture
Error is :Exception in thread "main" java.lang.UnsatisfiedLinkError: jpcap.JpcapCaptor.getDeviceLi
我正在尝试使用 JNI 向 Java 公开 C++ 功能。我试图首先显示一个简单的消息框,只是为了确保一切正常。但是,我得到了一个 UnsatisfiedLinkError 异常被抛出(当我调用函数时
尝试使用来自 here 的代码我试图合并这两个类,以便最终得到 ulaw 音频数据的 inputStream。所以我像这样编辑了 UlawEncoderInputStream: private Mic
我正在使用 Android Studio 3,并尝试在我的设备上使用 OpenCL。APK 编译失败: java.lang.UnsatisfiedLinkError: dlopen failed: l
我正在开发 SIP 基础应用程序来调用和接听电话我对一个开源项目进行了分析 Sipdroid.除此之外,我制作此应用程序以支持 g729 编解码器。该应用程序工作正常,但是当我修改应用程序的包名称时,
我知道这个问题已经被问过了,但我没有找到任何方法来阅读现有代码来找到解决我的问题的方法。我的一些应用程序用户对不同类型的 UnsatifiedLinkError 有经验: Caused by: jav
我在 Windows 7 中使用 IntelliJ,在最近对我的开发系统(不是设备)进行了突然更改后,我陷入了 UnsatisfiedLinkError 的困境。由 System.loadLibrar
我是一名优秀的程序员,十分优秀!