gpt4 book ai didi

java - 更改包名时找不到 native 方法

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:13 25 4
gpt4 key购买 nike

在我的项目中,当我更改包名称时,出现以下错误。我上网但没有有用的数据。在某些情况下,我发现我的方法不应该是静态的,当我删除静态时它规定该方法必须是静态的。任何解决这个问题的建议提前致谢这是我的错误:

未找到 native 方法:

com.nooshindroid.yastashir.controller.JNIServer.get_number_of_processors:()I
at com.nooshindroid.yastashir.controller.JNIServer.get_number_of_processors(Native Method)
at com.nooshindroid.yastashir.controller.JNIServer.runServer(JNIServer.java:27)
at com.nooshindroid.yastashir.game.FreebloksActivity.startNewGame(FreebloksActivity.java:520)
at com.nooshindroid.yastashir.game.FreebloksActivity$16.onClick(FreebloksActivity.java:774)
at com.nooshindroid.yastashir.game.ColorListDialog.onItemClick(ColorListDialog.java:79)
at android.widget.AdapterView.performItemClick(AdapterView.java:301)
at android.widget.AbsListView.performItemClick(AbsListView.java:1510)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3339)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)

这是我的代码:

public class JNIServer {
final static String tag = JNIServer.class.getSimpleName();

/* unfortunately Runtime.availableProcessors() returns only the number of online cores */
public static native int get_number_of_processors();

private static native int native_run_server(int game_mode, int field_size_x, int field_size_y, int ki_mode, int ki_threads);

private static native int native_resume_server(
int field_size_x,
int field_size_y,
int current_player,
int spieler[],
int field_data[],
int player_stone_data[],
int game_mode,
int ki_mode,
int ki_threads);


public static void runServer(Spielleiter spiel, int game_mode, int field_size, int ki_mode) {
int ki_threads = get_number_of_processors();

if (spiel == null)
native_run_server(game_mode, field_size, field_size, ki_mode, ki_threads);
else {
int player_stones_available[] = new int[Stone.STONE_COUNT_ALL_SHAPES * 4];
int i, j;

for (i = 0; i < 4; i++)
for (j = 0; j < Stone.STONE_COUNT_ALL_SHAPES; j++)
player_stones_available[i * Stone.STONE_COUNT_ALL_SHAPES + j] = spiel.get_player(i).get_stone(j).get_available();

native_resume_server(
spiel.m_field_size_x,
spiel.m_field_size_y,
spiel.current_player(),
spiel.spieler,
spiel.get_game_field(),
player_stones_available,
game_mode,
ki_mode,
ki_threads);
}
}

static {
Log.d(tag, "loading server.so");
System.loadLibrary("server");
}

}

最佳答案

为什么你到处使用native关键字?这应该意味着某些东西是用另一种语言实现的,但这里的情况似乎并非如此,因此会导致此错误。

关于java - 更改包名时找不到 native 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38037068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com