dalvikvm类找不到错误解决方案

本文介绍了一种在使用Smali代码执行时遇到的找不到类的错误,并详细记录了问题的排查过程及解决方案。要成功运行Smali编写的HelloWorld应用,需确保在root权限环境下执行。

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

运行官方的helloworld.smali报错找不到类,好奇怪,经过一番google后才发现,原来要在root权限下才可以执行。

报错:

Dalvik VM unable to locate class 'Helloworld'
java.lang.NoClassDefFoundError: Helloworld
	at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "Helloworld" on path: /data/local/HelloWorld.zip

smali代码

.class public LHelloWorld;

#Ye olde hello world application
#To assemble and run this on a phone or emulator:
#
#java -jar smali.jar -o classes.dex HelloWorld.smali
#zip HelloWorld.zip classes.dex
#adb push HelloWorld.zip /data/local
#adb shell dalvikvm -cp /data/local/HelloWorld.zip HelloWorld
#
#if you get out of memory type errors when running smali.jar, try
#java -Xmx512m -jar smali.jar HelloWorld.smali
#instead

.super Ljava/lang/Object;

.method public static main([Ljava/lang/String;)V
    .registers 2

    sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;

    const-string	v1, "Hello World!"

    invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V

    return-void
.end method


shell脚本

#!/bin/bash

java -jar smali-2.0.3.jar -o classes.dex HelloWorld.smali
zip HelloWorld.zip classes.dex
adb shell su -c 'chmod 777 /data/local'
adb push HelloWorld.zip /data/local
adb shell su -c 'dalvikvm -cp /data/local/HelloWorld.zip HelloWorld'







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值