我有一个由数据管理的研究项目的代码(它是git和git-附件的前端)。它包含我的代码和一个奇点容器,以保证可再现性。
我手动将java安装到这个目录中。最初我可以运行java -version,但是一旦我使用git annex add <java_dir>、git add .和git commit提交了我的更改,我就不能再启动java了。我收到以下错误消息:
Error: could not find libjava.so
Error: Could not find Java SE Runtime Environment.如何避免java和git-附件之间的这种不兼容?
(附件:我如何安装java)
mkdir lib
cd lib
wget https://javadl.oracle.com/webapps/download/AutoDL?BundleId=246799_424b9da4b48848379167015dcc250d8d -O jre_8_341.tgz
tar -xf ./jre_8_341.tgz # creates jre1.8.0_341/
rm jre_8_341.tgz
cd jre1.8.0_341/bin发布于 2022-10-25 18:06:27
结果,java二进制文件试图找到自己的路径,从调用strace java -version就可以看出这一点。
< ... lots of strace output... >
readlink("/proc/self/exe", "/proj/.git/annex/objects/X5/f3/M"..., 4096) = 120
< ... more strace output ...>readlink syscall进入.git/annex/objects目录,git-附件在该目录中保存大文件。因此,java得到了它的安装目录的错误答案,因此失败了。
解决方案是git annex unlock $JAVA_HOME/bin/java (其中$JAVA_HOME是您提取的java文件夹)。$JAVA_HOME/lib/amd64/server/libjvm.so也必须这样做,它尝试相同的manoever。
最后,必须在未锁定状态下提交文件。实际上,文件不能是指向git-附件对象存储的符号链接,而必须是常规文件。
https://stackoverflow.com/questions/74198405
复制相似问题