小编kof*_*ann的帖子

git 克隆失败并显示“ssh_dispatch_run_fatal”

我已经配置了ssh密钥,但仍然无法成功git克隆。错误信息是:

git clone git@gitlab.alibaba-inc.com:alimail-frontend/ragusa.git
Cloning into 'ragusa'...
remote: Counting objects: 108885, done.
Corrupted MAC on input. (76220/108885), 19.05 MiB | 7.62 MiB/s
ssh_dispatch_run_fatal: Connection to 100.67.155.102 port 22: message authentication code incorrect
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决它。是不是git配置有问题?

git

5
推荐指数
1
解决办法
9915
查看次数

使用 java.lang.foreign API 将 Java VarHandle 转换为 C 字符串

我想使用巴拿马项目中的外部函数接口来访问 Java19 中的 C 库。C 接口非常简单:

typedef struct {
  int len;
  char name[100];
} ent;

ent* foo();
Run Code Online (Sandbox Code Playgroud)

调用时,函数 foo 返回指向 的指针struct ent,其中len指示字符串的大小name

对应的Java端是:

private static final MemoryLayout ENT_LAYOUT = MemoryLayout.structLayout(
        JAVA_INT.withName("len"),
        MemoryLayout.sequenceLayout(100, ValueLayout.JAVA_BYTE).withName("name")
);
Run Code Online (Sandbox Code Playgroud)

为了方便访问,我想使用VarHandle

private static final VarHandle VH_ENT_LEN = ENT_LAYOUT.varHandle(groupElement("len"));

Run Code Online (Sandbox Code Playgroud)

以及后来

int len = (int)VH_ENT_LEN.get(segment);
String name = segment.asSlice(ENT_LAYOUT.byteOffset(groupElement("name")), len).getUtf8String(0);

Run Code Online (Sandbox Code Playgroud)

这仍然有点混乱。

我天真的期望解决方案应该是这样的:

private static final VarHandle VH_ENT_NAME = ENT_LAYOUT.varHandle(groupElement("name"), sequenceElement());

byte[] nameRaw = (byte[])VH_ENT_NAME.get(segment);
Run Code Online (Sandbox Code Playgroud)

但是我得到:

java.lang.RuntimeException: java.lang.invoke.WrongMethodTypeException:
   cannot convert MethodHandle(VarHandle,MemorySegment,long)byte …
Run Code Online (Sandbox Code Playgroud)

java java-native-interface project-panama java-18

2
推荐指数
1
解决办法
383
查看次数