工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2008|回复: 15

[LINUX] 软件安装提示找不到 xx.so 问题

[复制链接]
发表于 2007-5-4 13:06 | 显示全部楼层 |阅读模式
想安装 Gaim ,下了RPM文件,但安装过程中总是提示缺少某个  so文件,
上网搜了下,
上面建议MS是要把 lib/目录下的某个so文件
用ln 命令 建立映射(不知理解有没有错)


但逐个地GOOGLE看哪个文件和哪个文件可以相代替太麻烦了
(实际上也不懂得怎么搜...)...





系统是  asianux2.0
发表于 2007-5-4 14:29 | 显示全部楼层
其实你可以搜索缺的那个.so文件,然后把相应的包装了就行了
回复

使用道具 举报

 楼主| 发表于 2007-5-4 14:41 | 显示全部楼层
linux下装个Q都这么坎坷....
回复

使用道具 举报

发表于 2007-5-4 19:50 | 显示全部楼层
你想装gaim的QQ??装Luma QQ简单得多了,只需要装个java然后就可以直接运行了。
回复

使用道具 举报

发表于 2007-5-4 21:18 | 显示全部楼层
楼上说的对,装个LumaQQ就简单啦

PS:装Gaim后还要装个插件才能用QQ(但新版本不用)

再PS:Ubuntu已经默认安装Gaim(包括插件)

再再PS:用Debian及其衍生版本(如Ubuntu等)安装软件就方便啦,一条命令搞定:sudo apt-get install XXX
回复

使用道具 举报

 楼主| 发表于 2007-5-4 22:22 | 显示全部楼层
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

下了带 JRE 的 LumaQQ 在 shell下给的回应...
回复

使用道具 举报

发表于 2007-5-4 22:53 | 显示全部楼层
java -version
回复

使用道具 举报

 楼主| 发表于 2007-5-4 23:31 | 显示全部楼层
1.5.04
回复

使用道具 举报

发表于 2007-5-4 23:35 | 显示全部楼层
找不到类,env看看有无设置JAVA_HOME,如果没有的话设置好
回复

使用道具 举报

 楼主| 发表于 2007-5-4 23:39 | 显示全部楼层
都有设(java  javac都可以运行)...而且我下的是带JRE版本的,不会存在这个问题吧...
找不到 java.lang.Object 连基类都找不到...
把那个shell发上来...
#!/bin/bash

# 判断执行文件的类型,如果是一个符号链接,得到这个链接的目的路径,在以前的版本中,这个任务是用
# readlink -f 命令完成的。这种作法稍微有些问题,比如你的系统里面可能没有readlink命令,或者低版本的
# readlink还不支持-f参数,所以在这里先采用readlink,如果readlink失败,则再用file命令和一个
# 模式匹配来得到目的路径。目前我不确定是否每个平台上的file命令都是返回symbolic link to 这种字符串,
# 如果不是,把symbolic link to 替换成你的file命令返回的那样
PREFIX=
if [ -L "$0" ]; then
        PREFIX=`readlink -f $0`
        if [ $? -eq 0 ]; then
                PREFIX=`dirname $PREFIX`               
        else
                PREFIX=`file $0`
                PREFIX=${PREFIX##*symbolic link to }
                PREFIX=`dirname $PREFIX`
        fi
else
        PREFIX=`dirname $0`
fi

# 在这里我判断得到的路径是否是绝对路径,如果不是绝对
# 路径,我要再做一些处理得到绝对路径
case $PREFIX in
        /*)
        ;;
        *)
        cd $PREFIX
        PREFIX=`pwd`
        ;;
esac

# 这里检查你的用户目录下是否有.lumaqq目录,如果没有,
# 会自动建立一个,用户的所有QQ相关信息将保存在这个
# 目录下,所以在多用户的机器上,你应该把这个目录设置
# 成唯你可读
if [ ! -e $HOME/.lumaqq ]; then
        mkdir $HOME/.lumaqq
fi

# 这里对LumaQQ的一些目录和文件做一些链接,这个地方使用
# 了-f参数,所以即使你挪动了LumaQQ的目录到另外一次地方
# 下次运行也不会受影响
cd $HOME/.lumaqq
ln -sf $PREFIX/log4j.properties $HOME/.lumaqq/log4j.properties
ln -sf $PREFIX/xml
ln -sf $PREFIX/sound
ln -sf $PREFIX/QQWry.dat $HOME/.lumaqq/QQWry.dat

# 这里我设置Java到类路径,LumaQQ安装目录下面的lib目录
# 包含了所有需要用到的jar文件,这些都必须加到类路径中
cp=
for i in $PREFIX/lib/*.jar; do
        cp=$i:$cp
done

# 这里是开始运行了,为了用户的方便,这里尝试3种情况,首先检查用户安装的是不是带JRE版本的,如果是
# 则使用自带的JRE。如果失败,检查JAVA_HOME是否设置了,如果设置了,使用JAVA_HOME,如果仍然失败,
# 则在/usr下面找寻一个可用的JRE。如果/usr下面没有,则再在/opt下面找寻JRE,如果/opt下面也没有,
# 则在用户主目录下找寻JRE,如果还找不到,那就是真的失败了
if [ -e $PREFIX/java ]; then
        $PREFIX/java/bin/java -Djava.library.path=$PREFIX/swt -classpath $cp edu.tsinghua.lumaqq.LumaQQ "$HOME/.lumaqq" &
elif [ ! -z $JAVA_HOME ]; then
        $JAVA_HOME/bin/java -Djava.library.path=$PREFIX/swt -classpath $cp edu.tsinghua.lumaqq.LumaQQ "$HOME/.lumaqq" &
else
        found=0
        for i in `find /usr -name "java" | grep bin`; do
                if [ -x "$i" ]; then
                        $i -Djava.library.path=$PREFIX/swt -classpath $cp edu.tsinghua.lumaqq.LumaQQ "$HOME/.lumaqq" &
                        found=1
                        break
                fi
        done
       
        if [ $found -eq 0 ]; then
                for i in `find /opt -name "java" | grep bin`; do
                        if [ -x "$i" ]; then
                                $i -Djava.library.path=$PREFIX/swt -classpath $cp edu.tsinghua.lumaqq.LumaQQ "$HOME/.lumaqq" &
                                found=1
                                break
                        fi               
                done
        fi

        if [ $found -eq 0 ]; then
                for i in `find $HOME -name "java" | grep bin`; do
                        if [ -x "$i" ]; then
                                $i -Djava.library.path=$PREFIX/swt -classpath $cp edu.tsinghua.lumaqq.LumaQQ "$HOME/.lumaqq" &
                                break
                        fi
                done
        fi
fi
回复

使用道具 举报

发表于 2007-5-5 00:21 | 显示全部楼层
你检查一下你的lumaQQ下的lib目录是否有.jar文件,
echo $JAVA_HOME看是在哪个目录下。
或者到www.java.com重新下载个java重新安装。
回复

使用道具 举报

发表于 2007-5-5 00:23 | 显示全部楼层
还有你的lumaQQ是否在home目录下
回复

使用道具 举报

 楼主| 发表于 2007-5-5 00:44 | 显示全部楼层
本来不在HOME目录的
改放在HOME 还是一样


我据脚本ECHO出来的命令是:(不在home目录时)
java -Djava.library.path=/root/qq/LumaQQ/swt -classpath /root/qq/LumaQQ/lib/xerces.jar:/root/qq/LumaQQ/lib/swt.jar:/root/qq/LumaQQ/lib/poifs.jar:/root/qq/LumaQQ/lib/org.eclipse.ui.workbench_3.1.0.jar:/root/qq/LumaQQ/lib/org.eclipse.osgi_3.1.0.jar:/root/qq/LumaQQ/lib/org.eclipse.jface_3.1.0.jar:/root/qq/LumaQQ/lib/org.eclipse.emf.ecore.xmi_2.1.0.jar:/root/qq/LumaQQ/lib/org.eclipse.emf.ecore_2.1.0.jar:/root/qq/LumaQQ/lib/org.eclipse.emf.common_2.1.0.jar:/root/qq/LumaQQ/lib/org.eclipse.core.runtime_3.1.0.jar:/root/qq/LumaQQ/lib/org.eclipse.core.resources_3.1.0.jar:/root/qq/LumaQQ/lib/lumaqq_xsd.jar:/root/qq/LumaQQ/lib/lumaqq_template.jar:/root/qq/LumaQQ/lib/lumaqq.jar:/root/qq/LumaQQ/lib/log4j-1.2.8.jar:/root/qq/LumaQQ/lib/jql_protocol.jar:/root/qq/LumaQQ/lib/jql_net.jar:/root/qq/LumaQQ/lib/je.jar:/root/qq/LumaQQ/lib/jdom.jar:/root/qq/LumaQQ/lib/commons-logging.jar:/root/qq/LumaQQ/lib/commons-codec.jar: edu.tsinghua.lumaqq.LumaQQ /root/.lumaqq

提示:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /root/qq/LumaQQ/swt/libswt-pi-gtk-3138.so: /root/qq/LumaQQ/swt/libswt-pi-gtk-3138.so: cannot open shared object file: No such file or directory


但那目录分明有那个文件在那里...
回复

使用道具 举报

 楼主| 发表于 2007-5-5 01:15 | 显示全部楼层
重新下了个...竟奇迹地可以了....
回复

使用道具 举报

发表于 2007-5-5 04:37 | 显示全部楼层
java -Djava.library.path=/root/qq/LumaQQ/swt -classpath /root/qq/LumaQQ/lib这里少个冒号吧。。。
回复

使用道具 举报

 楼主| 发表于 2007-5-5 12:29 | 显示全部楼层
可能是那个文件损坏所致....

我新下载的用同样的方法 echo 出来 可以正常运行....


THX....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-9-22 05:50

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表