Java 堆栈保护可能已禁用?

Java 堆栈保护可能已禁用?,java,ubuntu,nullpointerexception,gpu,rootbeer,Java,Ubuntu,Nullpointerexception,Gpu,Rootbeer,我正在尝试运行rootbeer库中的第一个示例,您可以从中找到 问题是,尽管我遵循了他们的所有指示,但当我试图运行Jar时,我得到了以下消息 root@ubuserver3:/home/ubuadmin/JavaJars/HelloWordGPU# java -jar HelloWorldGPU.jar OpenJDK Client VM warning: You have loaded library /usr/lib/libcuda.so.319.37 which might have di

我正在尝试运行
rootbeer
库中的第一个示例,您可以从中找到

问题是,尽管我遵循了他们的所有指示,但当我试图运行Jar时,我得到了以下消息

root@ubuserver3:/home/ubuadmin/JavaJars/HelloWordGPU# java -jar HelloWorldGPU.jar
OpenJDK Client VM warning: You have loaded library /usr/lib/libcuda.so.319.37 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Exception in thread "main" java.lang.NullPointerException
        at org.trifort.rootbeer.runtime.Rootbeer.run(Rootbeer.java:104)
        at ScalarMult.test(ScalarMult.java:13)
        at Main.main(Main.java:17)
root@ubuserver3:/home/ubuadmin/JavaJars/HelloWordGPU#java-jar HelloWordGPU.jar
OpenJDK客户端VM警告:您已加载library/usr/lib/libcuda.so.319.37,这可能已禁用堆栈保护。VM现在将尝试修复堆栈保护。
强烈建议您使用“execstack-c”修复库,或使用“-z noexecstack”链接库。
线程“main”java.lang.NullPointerException中出现异常
位于org.trifort.rootbeer.runtime.rootbeer.run(rootbeer.java:104)
在ScalarMult.test(ScalarMult.java:13)
Main.Main(Main.java:17)
我不是Linux用户,所以我不知道如何正确执行这个命令。我也不明白他们所说的信息是什么意思,因为这是我第一次使用GPU编程。但是我知道用错误的命令干扰GPU是个问题。

键入:
execstack--version
检查是否已经安装了execstack

如果找不到命令类型:
sudo apt get install execstack-y--force yes

键入
sudo execstack-c

e、 g
sudo execstack-c/usr/lib/libcuda.so

1:使用以下命令检查execstack版本以查找是否安装了execstack

execstack --version
2:如果未安装execstack,则使用以下命令安装

sudo apt-get install execstack -y --force-yes
sudo execstack -c <filepath>
3:成功安装后,执行以下命令

sudo apt-get install execstack -y --force-yes
sudo execstack -c <filepath>
sudo execstack-c

例如:sudo execstack-c/usr/lib/libjpcap。因此

首先确保您没有在64位jvm上运行32位jar

确保您没有运行32位Java。如果运行java-d64,32位版本将打印错误。

文件
/usr/lib/libcuda.so.319.37包含什么

如果文件是0字节文件,则确实有问题,因此请尝试通过重新安装该库来修复系统


我在smartgit中也遇到了同样的问题,其中使用了本地配置文件夹中的一个库,该库不知何故已损坏,是一个0字节的文件。因此,删除配置文件夹并重新启动应用程序对我来说很有效。这也可能是一个解决方案。

试试:sudoexecstack-c/usr/lib/libcuda。so@Salil如果我们没有
execstack
,该怎么办?在尝试运行
execstack
或任何类似程序之前,请仔细检查您是否有
rootbeer
,以了解正确的体系结构。至少我在运行eclipse MAT时遇到了这个问题。谢谢您的编辑,这是我的第一个答案,非常抱歉出现了这种畸形。我这么做了多次,但仍然出现了相同的错误。它给出了以下错误execstack:无法获取ELF头:格式错误:引用外部文件。这对我的情况没有影响。你确定jar文件依赖于平台吗?谢谢@dhule(也是@andrej)。我可以搜索几个小时(或者几天)。