Java的“常量字符串太长”编译错误。 只发生使用Ant,不使用Eclipse时 Java的“常

2019-05-12 06:43发布

我在一个班上有几个很长的字符串初始化用户信息。 当我在Eclipse编译,我没有得到任何错误或警告,并将得到的.jar运行正常。

最近,我决定建立使用Ant生成文件。 每当我编译相同类的蚂蚁,我得到的“常量字符串太长”编译错误。 我已经尝试了多种方法来设置java编译器可执行的蚂蚁,以确保我使用的是完全相同的版本在Eclipse。

我宁愿弄清楚如何获得同样的成功编译,我得到在Eclipse的Ant中不是试图返工的代码,以动态地在连接字符串。

Answer 1:

有人试图向您发送邮件:-)在你已经花与编译器版本摆弄你可能会从文本文件加载数据的时间 - 这可能是属于它的地方。

查看:

  • java.util.Properties
  • Apache的百科全书FileUtils.readFileToString()


Answer 2:

我发现我可以使用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!!!" 
} );


Answer 3:

一个串中的类文件常量的长度是有限的,以UTF-8编码2 ^ 16字节,这不应该是取决于所使用的编译器。 也许你正在使用一个不同的角色比在Eclipse的Ant文件设置,使一些字符需要比以前更多的字节。 请检查encoding您的属性javac任务。



Answer 4:

上面没有为我工作。 我已创建了名的test.txt一个文本文件,并使用下面的代码读取该文本文件

String content = new String(Files.readAllBytes(Paths.get("test.txt")));


Answer 5:

另一特技,如果我决定把一个长字符串中的源,是为了避免编译器检测它作为一个常量表达式。

String dummyVar = "";
String longString = dummyVar +
    "This string is long\n" + 
    "really long...\n" + 
    "really, really LONG!!!";

这工作了一段时间,但如果你坚持下去太远的下一个问题是在编译器堆栈溢出。 这说明了同样的问题,如果你还在确定中,如何增加你的筹码-这个问题似乎是方法的庞大规模了。 再次,这是不是在Eclipse中的一个问题。



Answer 6:

你试试这个 ? 从来没有尝试过自己,但这里是有关部分:

使用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编译了该项目才能真正开始限制你太很多种方法。



Answer 7:

  String theString2 = IOUtils.toString(new FileInputStream(new     
  File(rootDir + "/properties/filename.text")), "UTF-8");


Answer 8:

您的字符串添加到值/ strings.xml中不是打电话getResources.getString(R.string.yourstring)



Answer 9:

你可以试试这个,

public static final String CONSTANT = new StringBuilder("Your really long string").toString();


文章来源: Java “constant string too long” compile error. Only happens using Ant, not when using Eclipse
标签: java eclipse ant