Java 使用android SDK中的tools/android可执行文件启动android AVM/SDK gui时出现问题。Ubuntu 10.04,i686

Java 使用android SDK中的tools/android可执行文件启动android AVM/SDK gui时出现问题。Ubuntu 10.04,i686,java,android,ubuntu-10.04,Java,Android,Ubuntu 10.04,您好,我刚刚在运行Ubuntu 10.04(Lucid)的i686 Thinkpad T60上安装了android SDK和Eclipse 3.5。(Eclipse是通过synaptic(即存储库中的一个包)安装的。)我安装了Eclipse附加组件,Eclipse端的一切看起来都很好。我还将android sdk工具目录放在我的用户路径上。现在,在没有任何参数的情况下启动tools/android应该会启动SDK和AVD manager GUI,但我得到了以下错误: Exception in t

您好,我刚刚在运行Ubuntu 10.04(Lucid)的i686 Thinkpad T60上安装了android SDK和Eclipse 3.5。(Eclipse是通过synaptic(即存储库中的一个包)安装的。)我安装了Eclipse附加组件,Eclipse端的一切看起来都很好。我还将android sdk工具目录放在我的用户路径上。现在,在没有任何参数的情况下启动tools/android应该会启动SDK和AVD manager 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)
线程“main”java.lang.UnsatisfiedLinkError中出现异常:swt.library.path、java.library.path或jar文件中没有swt-gtk-3550或swt gtk
位于org.eclipse.swt.internal.Library.loadLibrary(未知源)
位于org.eclipse.swt.internal.Library.loadLibrary(未知源)
在org.eclipse.swt.internal.C.(未知来源)
位于org.eclipse.swt.internal.Converter.wcsToMbcs(未知源)
位于org.eclipse.swt.internal.Converter.wcsToMbcs(未知源)
位于org.eclipse.swt.widgets.Display(未知源)
在com.android.sdkmanager.Main.showmain窗口(Main.java:265)
位于com.android.sdkmanager.Main.doAction(Main.java:249)
位于com.android.sdkmanager.Main.run(Main.java:94)
位于com.android.sdkmanager.Main.Main(Main.java:83)
奇怪的是,我确实安装了所有的先决条件,sun-java6-jdk和open-java6-jdk,并尝试在它们之间切换。另外,如果我查看synaptic,我已经安装了libswt-gtk-3.5java。当我使用eclipse启动AVM/SDK管理器时,它也可以正常启动

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

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

看看

android——没有ui

这根本不需要SWT/GTK。

(从Ubuntuforums复制)

12个月前我也有同样的问题。我发现这是因为我在使/tmp目录“noexec”可执行时就将其设置为“noexec”,所以一切正常

sudo mount -o remount,exec /tmp

希望这对其他人有所帮助。

这是一种更好的显示代码的方式。。把这个评论从@巴特回答……/P> 出于某种原因,它试图从/tmp执行swt lib。这是错误和愚蠢的,我不知道谁是罪魁祸首(android或java库本身)

所以,如果您不想将/tmp作为RW重新装载,只需将swtlib dir符号链接到其他地方。我把它移到了安卓目录

(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 

除用户所说的之外,我还建议用户注意以下提示:

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

sudo gedit/etc/fstab

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

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

致:


tmpfs/tmp tmpfs defaults,nodev,nosuid 0 0

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

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

而且效果很好

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

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

e、 g.在
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工具,这个更改将会被覆盖,所以你必须在每次更新时重新应用它。您可以在配置文件中将其导出为全局环境属性(适用于所有Java应用程序),而不是编辑此脚本。

只需删除tmp dir的内容即可

sudo rm -rf /tmp/*
之后尝试启动android sdk管理器。
这对我很有用。

如果您想通过命令行启动sdk管理器,另一个选项是,尝试运行:

> sudo android sdk

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

谢谢您的帮助!我花了些时间才找到你的答案。这就是哈利波特的魔法咒语。这使DDMS在我的Kubuntu 11.10 AMD64安装上从命令行(而不是通过eclipse)运行。谢谢,就在那儿!另一个比以前更讨厌java的原因。。。它试图执行
/tmp/swtlib-32/libswt-gtk-3550。所以
去图。。。所以,如果你真的需要RO/tmp(而且你应该)只需将这个目录符号链接到另一个地方…我不记得曾经这样做过。我想这可能是LinuxMint的默认设置。是的,Ubuntu从来没有给过我这个问题——只有LinuxMint。我希望有一天提问者会将你的答案标记为已被接受!嘿-马克·巴特的回答被接受了!:)它起作用了。