为什么我的程序会抛出这个 JNI 错误?
Why does my program throw this JNI error?
所以我编写了一个 JavaFX 小程序,它创建一个本地 http 服务器,接收像素颜色输入,并将其全部放入可以保存的单个图像中。
问题:每当我尝试 运行 另一台计算机上的程序时,我都会收到此错误:
但是,如果程序是在 "different computer" 上编译的,则错误已修复并且程序可以正常运行。让每个新用户下载 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));
}
}
}
}
无论如何,我感谢你们提供的任何帮助。
谢谢
所以我对这个错误的真正丑陋的修复是用旧版本的 java JDK 启动我的另一台计算机并从那里编译它。
感谢@Slaw 的帮助
所以我编写了一个 JavaFX 小程序,它创建一个本地 http 服务器,接收像素颜色输入,并将其全部放入可以保存的单个图像中。
问题:每当我尝试 运行 另一台计算机上的程序时,我都会收到此错误:
但是,如果程序是在 "different computer" 上编译的,则错误已修复并且程序可以正常运行。让每个新用户下载 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));
}
}
}
}
无论如何,我感谢你们提供的任何帮助。
谢谢
所以我对这个错误的真正丑陋的修复是用旧版本的 java JDK 启动我的另一台计算机并从那里编译它。
感谢@Slaw 的帮助