Java中的“代码太大”编译错误(“Code too large” compilation error in 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";
而编译时,我收到这个错误:代码太大
如何克服这个问题?
Is there any maximum size for code in Java? I wrote a function with more than 10,000 lines. Actually, each line assigns a value to an array variable.
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";
And while compiling, I get this error: code too large
How do I overcome this?
原文:https://stackoverflow.com/questions/2407912
2019-11-08 19:02
满意答案
Java类中的单一方法最多可以是64KB的字节码。
但你应该清理干净!
使用.properties文件来存储这些数据,并通过java.util.Properties加载它
您可以将.properties文件放在您的类路径上,然后使用:
Properties properties = new Properties();
InputStream inputStream = getClass().getResourceAsStream("yourfile.properties");
properties.load(inputStream);
A single method in a Java class may be at most 64KB of bytecode.
But you should clean this up!
Use .properties file to store this data, and load it via java.util.Properties
You can do this by placing the .properties file on your classpath, and use:
Properties properties = new Properties();
InputStream inputStream = getClass().getResourceAsStream("yourfile.properties");
properties.load(inputStream);
2015-08-05
相关问答
你的JUnit版本需要Hamcrest。 您应该将它包含在构建路径中或使用较旧的JUnit版本。 版本4.10有不同的JUnit包: junit-4.10.jar:包括Hamcrest,你应该使用它。 junit-dep-4.10.jar:不包括Hamcrest,如果你的buildpath中已经有一个hamcrest jar,请使用它。 Your JUnit version needs Hamcrest. You should include it in your buildpath or use...
Java类中的单一方法最多可以是64KB的字节码。 但你应该清理干净! 使用.properties文件来存储这些数据,并通过java.util.Properties加载它 您可以将.properties文件放在您的类路径上,然后使用: Properties properties = new Properties();
InputStream inputStream = getClass().getResourceAsStream("yourfile.properties");
properties...
您必须将您的班级命名为“ Main ”才能在SPOJ上工作。 有关更多信息,请参阅此论坛帖子: https : //www.spoj.com/forum/viewtopic.php?t = 37 You have to name your class "Main" for it to work on SPOJ. See this forum post for more information: https://www.spoj.com/forum/viewtopic.php?t=37
代码被限制为64K字节,当你初始化一个数组时,你可以在代码中执行此操作。 最好的选择是将数据存储在文件中并读取所需的数据。 注意:文件可以与应用程序一起部署并直接从存档中获取。 另一种选择是使用一个字符串(多个字符串的长度不受限制)并解析它。 编辑: 我建议你以人类可读的形式写入数据 Cm7 Bm6 Am7 ....
Dm8 Cm7 Dm8 ....
....
Code is limited to 64K bytes and when you initialize an array you do...
只需让你的应用程序将构造函数分解为几个方法 - 也就是说,构造函数调用多个小方法来完成它的工作。 这也使调试更容易,因为修复分散在方法中的错误一次一个方法更多的是一块蛋糕,而不是处理一个巨大的,破碎的方法。 这是一个方法的示例(不一定是构造函数,实际上您可以分解所有类型的方法)分解为更小的方法: public int doLotsOfStuff(String arg0, int arg1, boolean arg2, BiFunction arg...
具有不同类型参数的泛型类的实例不相关,即使String是Object的子类型, List不是List的子类型,即使List是List> , List>不是List>的子类型。 也许你正在寻找 List extends List>> a = new ArrayList>();
Instances of a generic class with different t...
经过大量讨论修复后发布 - 所有这些都没有成功 - 我使用dtrace来查看命令运行时javac正在访问哪些文件。 在终端(你需要安装XCode) sudo dtrace -s /dev/stdin
syscall::open*:entry
{
printf("%s %s", execname, copyinstr(arg0));
}
我在另一个终端实例中运行命令行,我发现它隐藏在javac的文件访问活动中 - 考虑到命令行选项,这给你的印象是你在限制它查找文件...
Java类(64k)有一个大小限制,在这个问题中有详细描述: java类/异常表的最大大小 所以它是一个硬限制,不应该被覆盖(如果内部地址是2字节,理论上甚至可能不可能)。 在主题_jspService超过65535字节限制的情况下,推荐的解决方案是使用动态包含而不是静态:
如果页面中有很多Java逻辑,请将其移至Java类。 如果您只是拥有庞大的页面,并且将其拆分为许多较小的页面不是一个选项,您可以尝试尽可能多地移动到自定义标签...
问题的核心:Maven仍然在用它启动的JDK编译你的代码。 由于您使用的是JDK 8,因此它正在使用JDK 8进行编译,并且要使用另一个编译器进行编译,您需要使用工具链或指定正确的JDK的路径。 建立 要测试此答案,您可以使用以下POM创建一个简单的Maven项目 <?xml version="1.0" encoding="UTF-8"?>
javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV
12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar
这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定