代码跑不起来 不知道什么原因,希望能解惑
guuguo opened this issue · 12 comments
报错信息:
Error:Failed to complete Gradle execution.
Cause:
String index out of range: -1
gradle 控制台错误信息:
e: 错误: Exception while handling step android.databinding.annotationprocessor.ProcessExpressions@1e87f01c javax.xml.bind.UnmarshalException
e:
e: - with linked exception:
e: [com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效。]
在Databinding中,我使用了类似这样的绑定:
(取自activity_search.xml)
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text='@{"共:" + viewModel.totalCount + "个相关结果"}'
android:textColor="@color/secondary_text"
android:textSize="12sp"
android:visibility="@{viewModel.totalCountVisibility}"
tools:text="共:274个相关结果" />
注意到android:text
这一行,我使用了中文。这在Unix系统下是可以编译通过的,然而在Windows下是无法编译通过的,详见:http://blog.csdn.net/yangheng362/article/details/70186866
我试了下 所有的硬编码写法都不行,只能@string搞
这算是Windows下开发Android使用DataBinding的常见问题了吧。因为Windows默认使用ANSI编码,简体中文的Windows下即GBK,所以需要加一个环境变量JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
来指定Javac默认的编码。
关于JAVA_TOOL_OPTIONS环境变量
所以不需要全用@string
这种方式来替代硬编码,Windows用户一样可以开心地玩耍DataBinding!
@guuguo @blackbbc @StephenGiant
我试过了你的环境变量方式 现在报的是另一个错 我还是把中文替换成string了 毕竟博主用到中文混搭接口数据的地方没几个 改起来也不是很大工作量
@derekdick
@derekdick 怎么配置这个环境变量呢?
@StephenGiant 知道怎么配置环境变量么?
@weiweiForAndroid 配置环境变量的方法是通用的,这个百度一下吧
@derekdick 配置好了,运行的时候提示 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
@weiweiForAndroid 这说明你环境变量配置成功了,忽略就行了
@derekdick 好的 ,多谢。
JAVA_TOOL_OPTIONS
环境变量 俩个= 啥意思