java - 为什么我的程序会抛出此 JNI 错误?

标签 java java-native-interface localserver

所以我编写了一个小的 JavaFX 程序,它创建一个本地 http 服务器,接收像素颜色输入,并将其全部放入可以保存的单个图像中。

问题:每当我尝试在另一台计算机上运行该程序时,我都会收到此错误:

enter image description here

但是,如果程序是在“不同的计算机”上编译的,则错误将得到修复并且程序可以正常工作。让每个新用户都下载 JDK 并自己编译程序是不切实际的,所以我希望自己能解决这个问题。

我已经将代码压缩到了我认为有问题的地方,剩下的只是无聊的 JavaFX Pane 以及其他什么。

import com.sun.net.httpserver.*;
import java.io.*;
import java.net.InetSocketAddress;
import java.awt.image.BufferedImage;
import javafx.embed.swing.SwingFXUtils;
import javax.imageio.ImageIO;
import java.util.*;

public void handle(HttpExchange exchanger) throws IOException{
            String response = "Request Recieved";
            exchanger.sendResponseHeaders(200,response.length());
            InputStream input = Exchanger.getRequestBody();
            String value = convertStreamToString(input);
            input.close();
            OutputStream output = exchanger.getResponseBody();
            output.write(response.getBytes());
            output.close();
            if (xTotal == 0 && yTotal == 0 && activated){
                    Scanner scan = new Scanner(value);
                    xTotal = scan.nextInt();
                    yTotal = scan.nextInt();
                    image = new WritableImage(xTotal,yTotal);
                    pixelWrite = image.getPixelWriter();
            }
            else{
                if (value.equals("StreamComplete")){
                    ExportImage.setDisable(false);
                }
                else{
                    int[][] tempArray = parseData(value);
                    if (tempArray.length > xTotal){
                        yCount++;
                        for (int i = 0; i < xTotal ; i++){
                            pixelWrite.setColor(i,yCount, Color.rgb(tempArray[i][0],tempArray[i][1],tempArray[i][2],1));
                        }
                        yCount++;
                        for (int i = xTotal; i < xTotal*2; i++){
                            pixelWrite.setColor(i-xTotal,yCount, Color.rgb(tempArray[i][0],tempArray[i][1],tempArray[i][2],1));
                        }

                    }
                    else{
                        yCount++;
                        for (int i = 0; i < xTotal ; i++){
                            pixelWrite.setColor(i,yCount, Color.rgb(tempArray[i][0],tempArray[i][1],tempArray[i][2],1));
                        }
                    }
                }
            }

无论如何,我感谢你们提供的任何帮助。

谢谢

最佳答案

所以我对这个错误的真正丑陋的修复是启动我的另一台安装了旧版本 java JDK 的计算机并从那里编译它。

感谢@Slaw 的帮助

关于java - 为什么我的程序会抛出此 JNI 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52457198/

相关文章:

java - 为什么在线程 "main"java.util.NoSuchElementException 中出现异常?

java - 使用 Alt+Enter 最大化 JavaFX Stage 时消除蜂鸣声

android - java.lang.UnsatisfiedLinkError 与 android 5.0 一起使用时

java - 在没有服务器的情况下连接到 Intellij Ultimate 中的本地 MySQL 数据库?

php - Laravel-4 : how to use queues to create a daemon

java - 是否可以从设备场中的 Playstore 安装应用程序?

Java 在新终端 (mac osx) 中开始运行命令 - 进程生成器未正确运行 osascript

java -/usr/bin/ld : cannot find -ljvm:during compiling jni project

java - JNI undefined symbol

scope - 从具有端口号的本地 IP 地址提供渐进式 Web 应用程序时,我应该在 manifest.json 文件中为 scope 属性指定什么值?