当前位置: 首页 > 知识库问答 >
问题:

在注释中使用不可映射字符生成项目?

郤瀚
2023-03-14

我正在尝试从源代码构建Android权限浏览器。我用svn checkout结账http://android-permission-explorer.googlecode.com/svn/。我添加了一个基本的构建。xml签出到项目后,然后放入终端:

$ /usr/local/bin/ant release
...
-compile:
    [javac] Compiling 14 source files to .../android-permission-explorer/bin/classes
    [javac] .../android-permission-explorer/src/com/carlocriniti/android/permission_explorer/ApplicationDetail.java:7: error: unmappable character for encoding UTF-8
    [javac]  * Activit� d'affichage du d�tail d'une application
...

错误是编码UTF-8的不可映射字符。

下面是ApplicationDetail中有问题的一行。java(这对我来说毫无意义,因为它只是一个注释):

/*
 * Projet   : Permission Explorer
 * Auteur   : Carlo Criniti
 * Date     : 2011.06.10
 * 
 * Classe ApplicationDetail
 * ActivitÈ d'affichage du dÈtail d'une application
 * avec les permissions qu'elle utilise
 */

有多个这样的错误。如果/usr/local/bin/ant版本2

问题:为什么注释中的字符会影响构建?

在编写一个简单的构建文件和属性任务时,我已经阅读了ant的文档,但是如果我能想出如何设置源文件语言,那就太糟糕了。

问题:如何在build中设置源文件语言。xml


共有2个答案

南宫胡媚
2023-03-14

Manouti回答了为什么Java没有忽略注释。我能对Java说的大概就是:愚蠢的想法。他们用一些不应该被编译的东西破坏了编译过程。

要解决这种情况下的问题,javac需要通过指定的编码java.encoding。最简单的方法似乎如下:

$ /usr/local/bin/ant -Djava.encoding=ISO-8859-1 release
Buildfile: …/android-permission-explorer/build.xml

-set-mode-check:

-set-release-mode:

-release-obfuscation-check:
     [echo] proguard.config is ${proguard.config}

-pre-build:

-check-env:
 [checkenv] Android SDK Tools Revision 24.0.2
 [checkenv] Installed at /opt/android-sdk-macosx

-setup:
     [echo] Project Name: Permission Explorer
  [gettype] Project Type: Application

-build-setup:
[getbuildtools] Using latest Build Tools: 21.1.2
     [echo] Resolving Build Target for Permission Explorer...
[gettarget] Project Target:   Android 2.2
[gettarget] API level:        8
     [echo] ----------
     [echo] Creating output directories if needed...
    [mkdir] Created dir: …/android-permission-explorer/bin/rsObj
    [mkdir] Created dir: …/android-permission-explorer/bin/rsLibs
     [echo] ----------
     [echo] Resolving Dependencies for Permission Explorer...
[dependency] Library dependencies:
[dependency] No Libraries
[dependency] 
[dependency] ------------------
[dependency] API<=15: Adding annotations.jar to the classpath.
     [echo] ----------
     [echo] Building Libraries with 'release'...
   [subant] No sub-builds to iterate on   

...
-dex:
      [dex] input: …/android-permission-explorer/bin/classes
      [dex] input: /opt/android-sdk-macosx/tools/support/annotations.jar
      [dex] Pre-Dexing /opt/android-sdk-macosx/tools/support/annotations.jar -> annotations-b850151b30962160fb610e078fc74448.jar
      [dex] Converting compiled files and external libraries into …/android-permission-explorer/bin/classes.dex...
       [dx] Merged dex A (37 defs/57.7KiB) with dex B (2 defs/1.1KiB). Result is 39 defs/66.6KiB. Took 0.1s

...
release:

BUILD SUCCESSFUL
Total time: 4 seconds

另一个有效的解决方案是使用以下内容修改项目的build.xml文件。

<project>
  ...
  <property name="java.encoding" value="ISO-8859-1" />
</project>
柳培
2023-03-14

即使它们在注释中,无效字符也会导致编译器错误:源代码通常在转换为字节码之前进行预处理,编译器刚刚遇到一个未映射到其字符集的字符。

最简单的方法是编辑源文件并以UTF-8编码保存thm。因为这是一个评论,所以删除这个角色可能不会有什么坏处。

 类似资料:
  • 我有许多带有JAXB注释的实体,我希望使用消息转换器将它们转换为JSON。 我知道我的ObjectMapper可以读取JAXB注释: 但是当我调用rest服务时,默认的注册MappingJacksonHttpMessageConverter(它不是为读取JAXB而配置的)似乎会接管--当忽略@XMLTransient时,由于循环引用而导致stackoverflow... 如何配置Spring来使用

  • 问题内容: 考虑此问题中列出的情况: 在Hibernate中映射多级继承 如何使用注释而不是hbm文件完成此映射? 问题答案: 您具体遇到什么问题?通过联接的子类映射类层次结构非常简单: 更新 (基于Michal的评论)。 如果您确实要使用区分符(并且您应该有 充分的 理由这样做),则可以通过将基于类的表策略与辅助表进行混合来实现: 这种方法的缺点是,您必须为每个映射的属性显式指定表:

  • 如何在Grails 3.0.1中映射带有注释的域类? 以下步骤对我不起作用。 步骤1.我使用Grails 3.0.1创建了一个新应用程序()。 步骤2。如Hibernate注释映射中所述,我在src/main/com/books/Book中创建了一个新类。groovy(也是groovy) 步骤3。然后通过将相关条目添加到grails-app/conf/Hibernate/Hibernate,向Hi

  • 我有以下映射器 我期望的是将使用映射列表中的每个条目。但是当我看到生成的代码时,我有以下内容 创建并使用新的映射器方法,而不是使用。 如何告诉使用。 注意:没有的情况下,一切都很正常。

  • 问题内容: 如何在Grails 3.0.1中使用注释映射域类? 以下步骤对我不起作用。 步骤1 。我使用Grails 3.0.1()创建了一个新应用程序。 第二步 。如“ 使用hibernate注释映射”中所述,我在(也尝试过)中创建了一个新类。 第三步 。然后通过向文件中添加相关条目,向Hibernate sessionFactory注册该类,如下所示: 第四步 。启动应用程序()后,“欢迎使用

  • 在测试应用程序中使用Grails中的JPA注释类(在Grails-3.1.11和Grails-3.2.0上尝试过)有问题。 3.将PostgreSQL JDBC依赖添加到build.grandle: 4、创建新的类DictionaryEntity。src/main/groovy中的groovy: 5、创建Hibernate。cfg。grails app/conf目录中的xml(也尝试了grails