Tôi đã được cung cấp một số mã nhà cung cấp bên thứ ba không được hỗ trợ trong một tệp jar của khách hàng và tôi đang cố gắng thiết kế lại nó để tôi thực hiện lại cùng một giao thức được sử dụng để kết nối đến một máy chủ.Lệnh Goto trong mã biên dịch gây ra sự cố
Tôi đã biên dịch nó và một trong các lớp dường như có nhãn và câu lệnh goto trong đó. Trình biên dịch của tôi là ném một hissy-phù hợp với điều này bởi vì như tôi hiểu nó goto không được hỗ trợ trong Java.
tôi không thể đăng tất cả các mã do các vấn đề IP nhưng đây là ý chính của nó (tôi đã đưa các lỗi biên dịch trong các ý kiến):
private void methodName(InputType input)
throws ConfigurationException
{
// initialization code here
_L2:
String x; // The compiler is complaining that "String cannot be resolved to a variable" here
String y; // This line is fine though...
// Some Code here
x = <SOME VALUE> // Compiler complains about "x cannot be resolved to a variable"
y = <ANOTHER VALUE> // Compiler is fine with this.
// Some more code
if(true) goto _L2; else goto _L1 // Multiple issues here see following lines.
// Syntax error on token "goto", throw expected
// _L2 cannot be resolved to a variable
// Syntax error on token "goto", { expected
// Syntax error on token "goto", { expected
_L1: // Syntax error on token "goto", { expected
local; // local cannot be resolved to a variable
// Some more code
JVM INSTR ret 12; // Multiple issues here see following lines.
// JVM INSTR ret 12;
// Syntax error on token "ret", = expected
return;
}
Tôi hiểu rằng các dòng sau bởi dấu hai chấm là Nhãn, nhưng tôi không hiểu điều gì đang xảy ra ở đây.
Dòng với goto đang thử nghiệm cho đúng vì vậy tôi chỉ có thể loại bỏ các nhãn như họ không liên quan ở đây, nhưng tôi không hiểu những gì dòng này có nghĩa là:
local;
Hoặc này:
JVM INSTR ret 12;
Bất kỳ hỗ trợ nào giải thích điều này sẽ được đánh giá cao nhất.
Nếu trình biên dịch ngược của bạn yêu cầu chuyển đổi bytecode JVM thành Java, nhưng mã mà nó xuất ra không phải là Java hợp lệ, không phải là một lỗi trong trình biên dịch ngược của bạn? – Raedwald
lưu ý cầu kỳ: hãy cẩn thận với kỹ thuật đảo ngược của bên thứ ba mã nhà cung cấp - và thậm chí đăng bài về nó - nó có thể không được phép của nhà cung cấp:/ – Christian
Tôi nghĩ rằng tôi obfuscated mã càng nhiều càng tốt ... –