11

嗨,我刚刚在运行 Ubuntu 10.04 (Lucid) 的 i686 Thinkpad T60 上安装了 android SDK 和 Eclipse 3.5。(Eclipse 是通过 synaptic 安装的,即存储库中的一个包。)我安装了 eclipse 插件,Eclipse 端的一切似乎都很好。我还将 android-sdk 工具目录放在我的用户 PATH 上。现在启动不带任何参数的工具/android 应该会调出 SDK 和 AVD 管理器 GUI,但我收到以下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-gtk-3550 or swt-gtk in swt.library.path, java.library.path or the jar file
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.C.<clinit>(Unknown Source)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
    at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
    at com.android.sdkmanager.Main.showMainWindow(Main.java:265)
    at com.android.sdkmanager.Main.doAction(Main.java:249)
    at com.android.sdkmanager.Main.run(Main.java:94)
    at com.android.sdkmanager.Main.main(Main.java:83)

奇怪的是,我确实安装了所有先决条件,sun-java6-jdk 和 open-java6-jdk,并尝试在它们之间切换。另外,如果我查看突触,我安装了 libswt-gtk-3.5java。当我用 Eclipse 启动它时,他的 AVM/SDK 管理器也能正常启动。

(你可能想知道我为什么在乎,但我喜欢从命令行工作,并考虑使用 emacs 作为我的 IDE 而不是 Eclipse。)

如果有人知道我该如何解决这个问题,请告诉我。

4

8 回答 8

44

(从 Ubuntuforums http://ubuntuforums.org/showthread.php?t=1540054复制)

我在 12 个月后遇到了同样的问题。我发现这是因为我一将 /tmp 目录设为“noexec”,就让它可执行,我们很好。

sudo mount -o remount,exec /tmp

希望这可以帮助某人。

于 2011-08-29T06:44:58.333 回答
4

除了用户Bart说得好和正确的话,我建议注意下面的提示:

高级 linux 用户或极客更经常会遇到这个问题。在 /etc/fstab 中应用“调整”(通常是为了提高速度)使 /tmp 成为 noexec 会导致这个问题。只需打开 fstab 并修改条目如下:

须藤 gedit /etc/fstab

如果您有类似的内容,只需注释该行或修改内容:

tmpfs /tmp tmpfs 默认值,noexec ,nodev,nosuid 0 0

至:

tmpfs /tmp tmpfs 默认值,nodev,nosuid 0 0

于 2013-01-09T01:26:52.223 回答
3

看一下

android <command> --no-ui

这根本不需要 SWT/GTK。

于 2011-02-15T10:45:47.380 回答
2

这是一个老问题,但我想提出一个不那么“激烈”的答案......

如果您不想更改文件系统挂载,另一种方法是您可以更改android工具启动脚本以明确指定 Java 应使用的临时目录。

例如,在android-studio/sdk/tools目录中,android脚本文件的末尾是执行的命令java

exec "$java_cmd" \
    -Djava.io.tmpdir=/home/me/android-studio/.tmp \
    -Xmx256M $os_opts $java_debug \
    -Dcom.android.sdkmanager.toolsdir="$progdir" \
    -classpath "$jarpath:$swtpath/swt.jar" \
    com.android.sdkmanager.Main "$@"

在此示例中,我使用“/home/me/android-studio/.tmp”,但当然您可以将其更改为您想要的任何内容。

不幸的是,如果您更新 Android 工具,此更改将被覆盖,因此您每次更新时都必须重新应用它。您可以export在您的配置文件中将其作为全局环境属性(适用于所有 Java 应用程序)而不是编辑此脚本。

于 2014-10-28T19:21:48.720 回答
1

我也遇到了这个问题。我通过将android sdk主目录(我安装在'/opt'中)的所有权更改给我来解决它。这是通过以下方式完成的:

sudo chown -R <username> /opt/android-sdk-linux 

而且效果很好!

于 2013-08-09T12:57:53.360 回答
0

只是显示代码的更好方法..考虑这是@Bart回答的评论...

出于某种原因,它试图从 /tmp 执行 swt-lib。这是错误和愚蠢的,我不知道谁是这里的罪魁祸首(android或java lib本身)

因此,如果您不想将 /tmp 重新挂载为 RW,只需将该 swtlib 目录符号链接到其他地方即可。我把它移到了 android 目录。

(0) ~
hobo$ mv /tmp/swtlib-32 android/

(0) ~
hobo$ ln -sf ~/android/swtlib-32 /tmp/swtlib-32

(0) ~
hobo$ android/android-sdk-linux/tools/android 
于 2012-11-09T02:16:08.660 回答
0

只需删除 tmp 目录的内容。

sudo rm -rf /tmp/*

之后尝试启动 android sdk manager。它对我有用。

于 2016-02-17T09:29:00.783 回答
0

如果您想通过命令行启动 sdk-manager,另一种选择是,尝试运行:

> sudo android sdk

这将以管理员模式运行,为您提供所需的权限

于 2017-08-18T14:32:17.363 回答