当前位置: 首页 > 面试题库 >

javac错误“代码太大”?

叶声
2023-03-14
问题内容

我有一个单元测试,其中我静态定义了一个很大的字节数组(超过8000个字节)作为我每次运行单元测试时都不希望读取的文件的字节数据。

private static final byte[] FILE_DATA = new byte[] {
12,-2,123,................
}

这在Eclipse中可以正常编译,但是通过Ant脚本进行编译时,出现以下错误:

[javac] C:\workspace\CCUnitTest\src\UnitTest.java:72: code too large
[javac]     private static final byte[] FILE_DATA = new byte[] {
[javac]                                 ^

任何想法为何以及如何避免这种情况?

答案 :Shimi的答案成功了。我将字节数组移到一个单独的类中,并且编译良好。谢谢!


问题答案:

Java中的方法在字节码中限制为64k。静态初始化是通过一种方法完成的(请参见link)。
您可以尝试从文件中加载数组数据。



 类似资料:
  • 如果Grails模板大小太大,并且使用的g:标记太多,无法通过模板引擎编译,那么会引发错误方法代码太大?

  • 我有一个gsp文件,其中包含1800行代码和从该视图渲染的两个模板。在我添加几个if条件之前,该视图工作得非常好。 堆栈跟踪如下:

  • 问题内容: 错误代码:1406。数据对于列而言太长 现在一些值 插入记录超过 如果我们的 它显示错误信息 错误代码:1406。数据对于列而言太长 但是我的期望是,我想在表中至少插入前45个字符 如果问题不清楚,请告诉我。 我知道此错误的原因。我正在尝试插入比数据类型长度更多的值。 我想要MySQL中的解决方案,因为它可能在中。所以我希望它也会出现在 MySQL中 。 问题答案: MySQL将截断任

  • 错误代码 宏定义 #define  RT_EOK   0   无错误   #define  RT_ERROR   1   一般错误   #define  RT_ETIMEOUT   2   超时错误   #define  RT_EFULL   3   资源已满   #define  RT_EEMPTY   4   资源已空   #define  RT_ENOMEM   5   内存不足   #de

  • 我已经使用CXF2.7.3生成了从wsdl到java的代码,但是在构建程序集时,我得到了“代码太大”的错误。指示其中一个方法已超过Java64KB限制。我很清楚是哪个类,对我来说,这似乎是CXF中的bug。Actully Axis2也这样做,所以我想知道是否有人知道如何解决这个问题。 如何强制代码生成拆分大型生成方法?或者我应该使用一些外部工具吗?

  • 说明:编写一条if语句,验证字符串是否包含字符。 添加一个if语句,检查是否大于零。不要忘记if语句末尾的!如果字符串中确实有一些字符,则打印用户的单词。否则(即:语句),请打印空。您需要多次运行代码,测试空字符串和带字符的字符串。当你确信你的代码可以工作时,继续下一个练习。 我被卡住了,因为我一直遇到以下错误。我做错了什么?