我在一个班上有几个很长的字符串初始化用户信息。 当我在Eclipse编译,我没有得到任何错误或警告,并将得到的.jar运行正常。
最近,我决定建立使用Ant生成文件。 每当我编译相同类的蚂蚁,我得到的“常量字符串太长”编译错误。 我已经尝试了多种方法来设置java编译器可执行的蚂蚁,以确保我使用的是完全相同的版本在Eclipse。
我宁愿弄清楚如何获得同样的成功编译,我得到在Eclipse的Ant中不是试图返工的代码,以动态地在连接字符串。
我在一个班上有几个很长的字符串初始化用户信息。 当我在Eclipse编译,我没有得到任何错误或警告,并将得到的.jar运行正常。
最近,我决定建立使用Ant生成文件。 每当我编译相同类的蚂蚁,我得到的“常量字符串太长”编译错误。 我已经尝试了多种方法来设置java编译器可执行的蚂蚁,以确保我使用的是完全相同的版本在Eclipse。
我宁愿弄清楚如何获得同样的成功编译,我得到在Eclipse的Ant中不是试图返工的代码,以动态地在连接字符串。
有人试图向您发送邮件:-)在你已经花与编译器版本摆弄你可能会从文本文件加载数据的时间 - 这可能是属于它的地方。
查看:
我发现我可以使用Apache Commons郎StringUtils.join(对象[])的方法来解决这个问题。
public static final String CONSTANT = org.apache.commons.lang.StringUtils.join( new String[] {
"This string is long",
"really long...",
"really, really LONG!!!"
} );
一个串中的类文件常量的长度是有限的,以UTF-8编码2 ^ 16字节,这不应该是取决于所使用的编译器。 也许你正在使用一个不同的角色比在Eclipse的Ant文件设置,使一些字符需要比以前更多的字节。 请检查encoding
您的属性javac
任务。
上面没有为我工作。 我已创建了名的test.txt一个文本文件,并使用下面的代码读取该文本文件
String content = new String(Files.readAllBytes(Paths.get("test.txt")));
另一特技,如果我决定把一个长字符串中的源,是为了避免编译器检测它作为一个常量表达式。
String dummyVar = "";
String longString = dummyVar +
"This string is long\n" +
"really long...\n" +
"really, really LONG!!!";
这工作了一段时间,但如果你坚持下去太远的下一个问题是在编译器堆栈溢出。 这说明了同样的问题,如果你还在确定中,如何增加你的筹码-这个问题似乎是方法的庞大规模了。 再次,这是不是在Eclipse中的一个问题。
你试试这个 ? 从来没有尝试过自己,但这里是有关部分:
使用Ant的javac适配器Eclipse编译器可以使用javac适配器在Ant脚本内使用。 为了使用Eclipse编译器,只需在脚本中定义build.compiler财产。 这里是一个小例子。
<?xml version="1.0" encoding="UTF-8"?>
<project name="compile" default="main" basedir="../.">
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
<property name="root" value="${basedir}/src"/>
<property name="destdir" value="d:/temp/bin" />
<target name="main">
<javac srcdir="${root}" destdir="${destdir}" debug="on" nowarn="on" extdirs="d:/extdirs" source="1.4">
<classpath>
<pathelement location="${basedir}/../org.eclipse.jdt.core/bin"/>
</classpath>
</javac>
</target>
</project>
我真的会考虑让你的类标准兼容。 我相信官方的限制是65535,而事实上,Eclipse是较为宽松的是有可能在最不方便的时候你改变,而无论哪种方式,不断地有得到和Eclipse编译了该项目才能真正开始限制你太很多种方法。
String theString2 = IOUtils.toString(new FileInputStream(new
File(rootDir + "/properties/filename.text")), "UTF-8");
您的字符串添加到值/ strings.xml中不是打电话getResources.getString(R.string.yourstring)
你可以试试这个,
public static final String CONSTANT = new StringBuilder("Your really long string").toString();