[英]Java not running with Eclipse, editing eclipse.ini gives error
[英]Platform dependent error in java (Running in eclipse windows but gives error in linux)
我有一個 java 示例程序,它在 eclipse 中運行得很好,但是當我嘗試在 linux 中使用 java 編譯它時出現錯誤。 請幫忙。 我也在代碼結束后附加了錯誤跟蹤:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Arrays;
public class Main {
public String toStringMethod(TestObject test) {
String serializedObject = "";
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream so = new ObjectOutputStream(bo);
so.writeObject(test);
so.flush();
serializedObject = bo.toString();
} catch (Exception e) {
System.out.println(e);
}
return serializedObject;
}
public TestObject toObjectMethod(String string) {
String serializedObject = string;
TestObject obj = null;
try {
byte b[] = serializedObject.getBytes();
ByteArrayInputStream bi = new ByteArrayInputStream(b);
ObjectInputStream si = new ObjectInputStream(bi);
obj = (TestObject) si.readObject();
} catch (Exception e) {
System.out.println(e);
}
return obj;
}
public static void main(String[] args) {
Main mn = new Main();
TestObject object = new TestObject();
object.setString(10);
String str = mn.toStringMethod(object);
TestObject newObject = mn.toObjectMethod(str);
newObject.printHello();
}
}
class TestObject implements Serializable{
char chars[];
String str;
public String setString(int numberOfBytes) {
numberOfBytes = numberOfBytes/2;
chars = new char[numberOfBytes];
Arrays.fill(chars, 'a');
str = new String(chars);
return str;
}
public String getString() {
return str;
}
public void printHello() {
System.out.println("hello tester");
}
}
錯誤跟蹤是:java.io.StreamCorruptedException: invalid stream header: EFBFBDEF
這是因為字符集。 在 Windows 中,默認字符集是 windows-1252。 但是 Linux 默認字符集是 UTF-8。
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.nio.charset.Charset;
import java.util.Arrays;
public class Main {
public String toStringMethod(TestObject test) {
String serializedObject = "";
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream so = new ObjectOutputStream(bo);
so.writeObject(test);
so.flush();
so.close();
serializedObject = bo.toString("windows-1252");
System.out.println(serializedObject);
} catch (Exception e) {
System.out.println(e);
}
return serializedObject;
}
public TestObject toObjectMethod(String string) {
String serializedObject = string;
TestObject obj = null;
try {
byte b[] = serializedObject.getBytes("windows-1252");
ByteArrayInputStream bi = new ByteArrayInputStream(b);
ObjectInputStream si = new ObjectInputStream(bi);
obj = (TestObject) si.readObject();
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
public static void main(String[] args) {
Main mn = new Main();
TestObject object = new TestObject();
object.setString(10);
String str = mn.toStringMethod(object);
TestObject newObject = mn.toObjectMethod(str);
newObject.printHello();
}
}
class TestObject implements Serializable{
char chars[];
String str;
public String setString(int numberOfBytes) {
numberOfBytes = numberOfBytes/2;
chars = new char[numberOfBytes];
Arrays.fill(chars, 'a');
str = new String(chars);
return str;
}
public String getString() {
return str;
}
public void printHello() {
System.out.println("hello tester");
}
}
如果您更改字符集,則其工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.