./cts-tradefed run error[REASON:java config is not right]

本文提供了解决在使用Android CTS工具时遇到的内部错误问题的详细步骤,包括下载并安装Java 7 JDK,修改环境变量等操作。通过遵循这些步骤,用户可以成功解决在运行CTS工具时遇到的异常情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ERROR:

gabby@gabby-desktop:/tools_gabby/CTS/liuhao/android-cts/tools$ ./cts-tradefed 

Exception in thread "Thread-2" Exception in thread "Thread-1" java.lang.InternalError: internal error: SeedGenerator thread generated an exception.
at sun.security.provider.SeedGenerator$ThreadedSeedGenerator.getSeedByte(SeedGenerator.java:394)
at sun.security.provider.SeedGenerator$ThreadedSeedGenerator.getSeedBytes(SeedGenerator.java:379)
at sun.security.provider.SeedGenerator.generateSeed(SeedGenerator.java:139)
at sun.security.provider.SecureRandom$SeederHolder.<clinit>(SecureRandom.java:186)
at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:203)
at java.security.SecureRandom.nextBytes(SecureRandom.java:455)
at java.security.SecureRandom.next(SecureRandom.java:477)
at java.util.Random.nextLong(Random.java:334)
at java.io.File$TempDirectory.generateFile(File.java:1882)
at java.io.File.createTempFile(File.java:1987)
at java.io.File.createTempFile(File.java:2040)
at com.android.tradefed.util.FileUtil.createTempFile(FileUtil.java:272)
at com.android.tradefed.util.SizeLimitedOutputStream.generateNextFile(SizeLimitedOutputStream.java:178)
at com.android.tradefed.util.SizeLimitedOutputStream.write(SizeLimitedOutputStream.java:195)
at java.io.OutputStream.write(OutputStream.java:116)
at java.io.OutputStream.write(OutputStream.java:75)
at com.android.tradefed.log.FileLogger.writeToLog(FileLogger.java:138)
at com.android.tradefed.log.FileLogger.internalPrintLog(FileLogger.java:122)
at com.android.tradefed.log.FileLogger.printLog(FileLogger.java:106)
at com.android.tradefed.log.LogRegistry.printLog(LogRegistry.java:164)
at com.android.ddmlib.Log.println(Log.java:329)
at com.android.ddmlib.Log.d(Log.java:177)
at com.android.tradefed.log.LogUtil$CLog.d(LogUtil.java:114)
at com.android.tradefed.util.RunUtil$RunnableResult.run(RunUtil.java:347)
at com.android.tradefed.util.RunUtil$RunnableNotifier.run(RunUtil.java:305)
java.lang.IllegalStateException: start() must be called before this method
at com.android.tradefed.command.CommandScheduler.assertStarted(CommandScheduler.java:1491)
at com.android.tradefed.command.CommandScheduler.shutdown(CommandScheduler.java:979)
at com.android.tradefed.command.Console.run(Console.java:836)
at com.android.cts.tradefed.command.CtsConsole.run(CtsConsole.java:60)

gabby@gabby-desktop:/tools_gabby/CTS/liuhao/android-cts/tools$ 


SOLUTION:

2000  sudo tar zxvf java1.7.tar.gz -C /usr/lib/jvm
2001  sudo gedit /etc/profile
2002  source /etc/profile

------------------------------------------------------

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).


if [ "$PS1" ]; then
  if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi


# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.


if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi


#set java1.6 environment by gabby
#export JAVA_HOME=/tools_gabby/jdk1.6.0_32/
#export JRE_HOME=/tools_gabby/jdk1.6.0_32/jre
#export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
#export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH


#set java1.7 environment
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64  
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH



#set monkeyrunner environment by gabby
export MONKEY_TOOLS=/tools_gabby/adt-bundle-linux-x86_64-20140321/sdk/tools
export MONKEY_PLATFORMTOOLS=/tools_gabby/adt-bundle-linux-x86_64-20140321/sdk/platform-tools
export PATH=$MONKEY_TOOLS:$MONKEY_PLATFORMTOOLS:$PATH


------------------------------------------------------------------------

第一步:下载jdk-7-linux-i586.tar.gz

  1. wget -c http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.tar.gz  
(注:如果下载不下来,建议使用迅雷下载,然后拷贝到Linux系统上。)

第二步:解压安装

  1. sudo mkdir /usr/lib/jvm
  2. sudo tar zxvf jdk-7u5-linux-x64.tar.gz -C /usr/lib/jvm 

第三步:修改环境变量

  1. sudo gedit /etc/profile 
添加:
  1. #set java environment
  2. export JAVA_HOME=/usr/lib/jvm/java-7-sun  
  3. export JRE_HOME=${JAVA_HOME}/jre  
  4. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
  5. export PATH=${JAVA_HOME}/bin:$PATH  

保存退出,输入以下命令使之立即生效。


<think>嗯,用户遇到了一个权限问题,执行./android-cts/tools/cts-tradefed时提示权限不够。我需要先回忆一下Linux权限的基本知识。这个错误通常是因为文件没有执行权限,所以应该检查文件的权限设置。 首先,用户可能没有对该文件添加可执行权限。这时候应该用chmod命令来修改权限,比如chmod +x加上文件名。不过,我需要确认用户是否正确使用了命令,路径是否正确。可能用户所在的当前目录不是android-cts下,或者文件路径有误,不过错误提示显示的是正确的路径,所以可能不是路径问题。 另外,用户是否有权限访问该文件?如果是系统权限问题,可能需要sudo,但使用sudo可能不太安全,尤其是CTS测试可能需要特定环境。所以建议用户先尝试修改文件权限,而不是直接使用sudo。 接下来,我需要考虑是否有其他可能的原因。比如文件是否是损坏的,或者是不是正确的可执行文件。有时候文件可能没有正确的shebang行,或者格式不对,但这种情况比较少见。用户可能需要检查文件类型,用file命令看看是否是脚本或者二进制文件。 还有,整个tools目录的权限如何?如果父目录没有执行权限,用户可能也无法访问其中的文件。这时候需要检查目录的权限,用ls -l查看,并可能需要chmod修改目录权限。 总结下来,解决方案步骤应该是:检查文件权限,用chmod添加执行权限,确认路径正确,检查文件完整性,最后考虑目录权限。同时提醒用户谨慎使用sudo,以免引发安全问题。</think>你遇到的错误 `./android-cts/tools/cts-tradefed: 权限不够` 是典型的 **Linux/Unix 系统权限问题**,以下是分步分析和解决方案: --- ### **1. 问题原因** - **文件缺少执行权限**:Linux系统中,若文件未设置“可执行”权限(`x` 权限),则无法直接通过路径执行。 - **用户权限不足**:当前用户可能不属于文件所有者或所属用户组,且未分配执行权限。 --- ### **2. 验证文件权限** 在终端输入以下命令,查看文件权限: ```bash ls -l ./android-cts/tools/cts-tradefed ``` 输出示例: ``` -rw-r--r-- 1 user group 12345 Jan 1 12:34 ./android-cts/tools/cts-tradefed ``` - **关键字段**:第一列的 `-rw-r--r--` 表示: - 所有者(user)有读写权限(`rw-`) - 所属组(group)和其他用户只有读权限(`r--`) - **缺少执行权限**(没有 `x`)。 --- ### **3. 添加执行权限** 为文件添加执行权限: ```bash chmod +x ./android-cts/tools/cts-tradefed ``` - `chmod`:修改权限的命令 - `+x`:为所有者、组和其他用户添加执行权限 - 再次运行 `ls -l` 确认权限已更新为 `-rwxr-xr-x` --- ### **4. 检查文件路径和完整性** - **路径是否正确**:确保当前目录是 `android-cts` 的父目录。若路径错误,需调整命令: ```bash cd /path/to/android-cts # 进入正确目录 ./tools/cts-tradefed ``` - **文件是否完整**:若文件损坏或未下载完整,可重新下载 [Android CTS 测试套件](https://source.android.com/docs/compatibility/cts/downloads)。 --- ### **5. 高级场景(可选)** - **使用 `sudo`(谨慎操作)**:若文件属于其他用户(如 `root`),可尝试: ```bash sudo ./android-cts/tools/cts-tradefed ``` - ⚠️ 注意:CTS测试通常无需 `sudo`,过度使用可能导致环境异常。 - **修改文件所有权**:若文件属于其他用户: ```bash sudo chown $USER:$USER ./android-cts/tools/cts-tradefed ``` --- ### **6. 验证是否解决** 重新执行命令: ```bash ./android-cts/tools/cts-tradefed ``` 若仍报错,请检查终端输出是否有其他错误信息(如Java依赖缺失等)。 --- ### **总结** | 步骤 | 操作 | 命令示例 | |------|------|----------| | 1 | 检查权限 | `ls -l ./android-cts/tools/cts-tradefed` | | 2 | 添加执行权限 | `chmod +x ./android-cts/tools/cts-tradefed` | | 3 | 重新执行 | `./android-cts/tools/cts-tradefed` | 若问题持续,请提供完整的终端输出以进一步排查。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值