Java &引用;“代码太大”;在资源文件中初始化为数组的值太多时出现错误

Java &引用;“代码太大”;在资源文件中初始化为数组的值太多时出现错误,java,resources,Java,Resources,我试图从资源类文件中获取值,在该文件中,我需要将大量值初始化为静态最终对象[][]数组,这导致编译时出现“代码太大”错误 在论坛上搜索这个,到处都有人说它像拆分你的代码。但是,我希望避免使用多个资源文件。我们可以通过使用不同的类/变量/方法和all在同一个资源文件中进行相同的拆分吗 这是我使用的代码结构示例 package resources; import java.util.ListResourceBundle; public class Labels extends ListResou

我试图从资源类文件中获取值,在该文件中,我需要将大量值初始化为
静态最终对象[][]
数组,这导致编译时出现“代码太大”错误

在论坛上搜索这个,到处都有人说它像拆分你的代码。但是,我希望避免使用多个资源文件。我们可以通过使用不同的类/变量/方法和all在同一个资源文件中进行相同的拆分吗

这是我使用的代码结构示例

package resources;

import java.util.ListResourceBundle;

public class Labels extends ListResourceBundle
{
  static final Object[][] contents = { { "RD.Empno.label", "Employee No" }, 
                                       { "RD.Ename.label", "Employee Name" }, 
                                       { "RD.Sal.label", "Salary" },
                                       { "RD.Deptno.label", "Department No" }
                                     };

  public Object[][] getContents()
  {
    return contents;
  }
}
请建议继续进行的方式

static final Object[][] contents = new Object[xlength][ylength];

然后,如果可能的话,使用一个循环以类似结构的数据填充包。如果你不能,你可以在这里填写你的部分内容,在另一节课上填写你的部分内容。或者,将数据存储在另一个文件(不是类文件)中,并从中读取。

出现问题的原因是编译的字节码限制为64KB,并且当您以这种方式构建数组时,它实际上会设置方法中的每个值

一个更简洁的方法是使用您解析的文本文件来加载它,或者您可以创建一个您解析的字符串。这将使代码更小

static final String[][] contents = parse("RD.Empno.label, Employee No\n"
                                   + "RD.Ename.label, Employee Name\n" 
                                   + "RD.Sal.label, Salary\n",
                                   + "RD.Deptno.label, Department No");
parse看起来像什么

static String[][] parse(String... strs) {
    List<String[]> list = new ArrayList<>();
    for(String s: strs) {
        String[] lines = s.split("\n");
        for(int i = 0; i < lines.length; i++) 
           list.add(lines[i].split(", ", 2));
    }
    return list.toArray(new String[list.size()][]);
}
静态字符串[][]解析(字符串…strs){
列表=新的ArrayList();
用于(字符串s:strs){
字符串[]行=s.split(“\n”);
对于(int i=0;i

这样,您的阵列最多可以使用2 GB,并且仍然适合使用。

谢谢大家。我将尝试Peter提到的过程,并会回来。我尝试了u建议的方法,它与我在这里提供的示例数据(4组值)很好地工作,但与原始数据(数量巨大,大约22000组值)一起使用时抛出了“常量字符串太长”错误。。您能不能建议其他方法来拆分相同的字符串。@SandeepKGujje您可以将其拆分为许多不太大的字符串。最好的解决方案是使用外部文本文件。这使得编辑文件更容易。