Почему моя программа выдает эту ошибку JNI? - PullRequest
0 голосов
/ 22 сентября 2018

Итак, я написал небольшую программу на JavaFX, которая создает локальный http-сервер, получает пиксельный ввод цвета и добавляет все это в одно изображение, которое можно сохранить.

Проблема: Всякий раз, когда я пытаюсь запустить программу на другом компьютере, я получаю эту ошибку:

enter image description here

Однако, если программакомпилируется на «другом компьютере», затем ошибка исправляется и программа работает как обычно.Каждый новый пользователь скачивает JDK, а компиляция программы самостоятельно нецелесообразна, поэтому я надеюсь решить эту проблему с моей стороны.

Я сжал код до того места, где, как мне кажется, проблема, остальное только скучноПанель JavaFX и что нет.

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));
                        }
                    }
                }
            }

В любом случае, я ценю любую помощь, которую вы, ребята, можете предложить.

Спасибо

1 Ответ

0 голосов
/ 24 сентября 2018

Таким образом, мое действительно ужасное исправление этой ошибки состояло в том, чтобы загрузить мой другой компьютер с установленной старой версией java JDK и скомпилировать его оттуда.

Спасибо @Slaw за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...