Java의 "코드가 너무 큼"컴파일 오류
Java에서 코드의 최대 크기가 있습니까? 10,000 줄이 넘는 함수를 작성했습니다. 실제로 각 줄은 배열 변수에 값을 할당합니다.
arts_bag[10792]="newyorkartworld";
arts_bag[10793]="leningradschool";
arts_bag[10794]="mailart";
arts_bag[10795]="artspan";
arts_bag[10796]="watercolor";
arts_bag[10797]="sculptures";
arts_bag[10798]="stonesculpture";
컴파일하는 동안이 오류가 발생합니다. 코드가 너무 큽니다.
이것을 어떻게 극복합니까?
Java 클래스의 단일 메소드는 최대 64KB의 바이트 코드 일 수 있습니다.
그러나 이것을 정리해야합니다!
사용하여 .properties
파일이 데이터를 저장하고,를 통해 그것을로드java.util.Properties
.properties
클래스 경로에 파일을 배치하여이를 수행 하고 다음을 사용할 수 있습니다.
Properties properties = new Properties();
InputStream inputStream = getClass().getResourceAsStream("yourfile.properties");
properties.load(inputStream);
메서드 에 64K 바이트 코드 크기 제한이 있습니다.
그렇긴하지만, 나는 리처드와 동의해야합니다. 왜 그렇게 큰 방법이 필요한가요? OP의 예제가 주어지면 속성 파일이 충분해야합니다 ... 또는 필요한 경우 데이터베이스도 충분합니다.
에 따르면 Java 가상 머신 사양 하는 방법의 코드는보다 큰 65536 바이트 안 :
code_length
항목 의 값은 65536보다 작아야합니다.
어디 code_length
에서 정의 §4.7.3 Code
특성 :
code_length
:code_length
항목 의 값은 이 메서드에 대한 코드 배열의 바이트 수를 제공합니다. code_length의 값은 0보다 커야합니다. 코드 배열은 비워 둘 수 없습니다.
code[]
: 코드 배열은 메소드를 구현하는 Java 가상 머신 코드의 실제 바이트를 제공합니다.
이것은 마치 광기처럼 보입니다. 텍스트 파일이나 다른 데이터 소스에서 값을 읽어 배열을 초기화 할 수 없습니까?
코드를 리팩터링하십시오. Java에서는 메소드 크기에 제한이 있습니다.
다른 답변에서 언급했듯이 메서드에 대한 바이트 코드 제한은 64KB입니다 (적어도 Sun의 Java 컴파일러에서는)
나에게도 그 메서드를 더 많은 메서드로 나누는 것이 더 합리적 일 것입니다. 각각은 특정 관련 항목을 배열에 할당합니다 (이 작업을 수행하기 위해 ArrayList를 사용하는 것이 더 합리적 일 수 있음).
예를 들면 :
public void addArrayItems()
{
addSculptureItems(list);
...
}
public void addSculptureItems(ArrayList list)
{
list.add("sculptures");
list.add("stonesculpture");
}
또는 속성 파일 에서처럼 고정 된 경우 정적 리소스에서 항목을로드 할 수 있습니다.
나는이 문제를 직접 겪었습니다. 나를 위해 일한 솔루션은 방법을 더 관리하기 쉬운 부분으로 리팩토링하고 축소하는 것이 었습니다. 당신처럼 저는 거의 10K 라인 방법을 다루고 있습니다. 그러나 정적 변수와 더 작은 모듈 식 함수를 사용하여 문제가 해결되었습니다.
더 나은 해결 방법이있을 것 같지만 Java 8을 사용하면 아무것도 없습니다.
You can add another method to create space for your code for additional data space, you might have a method that is taking a large amount of data space. Try dividing your methods because I had the same issue and and fix it by creating another an additional method for the same data in my java Android code, The issue was gone after I did that.
This error sometimes occur due to too large code in a single function... To solve that error, split that function in multiple functions, like
//Too large code function
private void mySingleFunction(){
.
.
2000 lines of code
}
//To solve the problem
private void mySingleFunction_1(){
.
.
500 lines of code
}
private void mySingleFunction_2(){
.
.
500 lines of code
}
private void mySingleFunction_3(){
.
.
500 lines of code
}
private void mySingleFunction_4(){
.
.
500 lines of code
}
private void MySingleFunction(){
mySingleFunction_1();
mySingleFunction_2();
mySingleFunction_3();
mySingleFunction_4();
}
참고URL : https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
'code' 카테고리의 다른 글
루비 1.8.6 (each_char)에서 문자열의 각 문자에 대해 반복 (0) | 2020.09.19 |
---|---|
논리 연산자의 서면 버전 (0) | 2020.09.19 |
목록을 집합으로 변환하면 요소 순서가 변경됩니다. (0) | 2020.09.19 |
ViewPager가 콘텐츠를 다시 그리지 않고 그대로 유지 / 비어 있음 (0) | 2020.09.19 |
Maven이 로컬 아티팩트를 찾지 못함 (0) | 2020.09.19 |