伙计们持续2至3天,我正在尝试为J2OBJC转换运行示例项目。首先,我遇到找不到j2objc命令的问题,通过将路径添加到/ etc / paths文件来解决此问题。现在,我面临的问题是J2OBJC_HOME路径定义不正确。

`/ bin / sh -c if \ [\!\ -f \ \“ $ {J2OBJC_HOME} / j2objc \” \]; \ then \ echo \“ J2OBJC_HOME \ not \正确\定义\ in \ Settings.xcconfig, \当前\设置\为\ \'$ {J2OBJC_HOME} \'\“; \退出\ 1; \ fi; \
\“ $ {J2OBJC_HOME} / j2objc \” \ -d \ $ {DERIVED_FILES_DIR} \ -sourcepath \ \“ $ {PROJECT_DIR} / Classes \” \ --no-package-directories \ -use-arc \ --prefix \ Othello.Engine = JOE \ -g \ $ {INPUT_FILE_PATH};

警告:发生了非法的反射访问操作
警告:com.google.devtools.j2objc.javac.JavacEnvironment(文件:/ Users / ***** / Documents / j2objc-2.0.5 / lib / j2objc.jar)对字段com.sun.tools的非法反射访问.javac.code.Symtab.java_base
警告:请考虑将此内容报告给com.google.devtools.j2objc.javac.JavacEnvironment的维护者
警告:使用--illegal-access = warn启用有关进一步非法反射访问操作的警告
警告:在将来的版本中,将拒绝所有非法访问操作
错误:翻译“ /Users/*****/Downloads/j2objc-sample-reversi-master/Classes/Othello/Engine/Score.java”的内部错误
java.lang.NoSuchFieldError:运算符
    在com.google.devtools.j2objc.javac.TreeConverter.convertBinary(TreeConverter.java:513)
    在com.google.devtools.j2objc.javac.TreeConverter.convertInner(TreeConverter.java:346)
    在com.google.devtools.j2objc.javac.TreeConverter.convert(TreeConverter.java:202)
    在com.google.devtools.j2objc.javac.TreeConverter.convertArrayAccess(TreeConverter.java:476)
    在com.google.devtools.j2objc.javac.TreeConverter.convertInner(TreeConverter.java:230)
    在com.google.devtools.j2objc.javac.TreeConverter.convert(TreeConverter.java:202)
    在com.google.devtools.j2objc.javac.TreeConverter.convertAssignment(TreeConverter.java:497)
    在com.google.devtools.j2objc.javac.TreeConverter.convertInner(TreeConverter.java:236)
    在com.google.devtools.j2objc.javac.TreeConverter.convert(TreeConverter.java:202)
    在com.google.devtools.j2objc.javac.TreeConverter.convertExpressionStatement(TreeConverter.java:691)
    在com.google.devtools.j2objc.javac.TreeConverter.convertInner(TreeConverter.java:263)
    在com.google.devtools.j2objc.javac.TreeConverter.convert(TreeConverter.java:202)
    在com.google.devtools.j2objc.javac.TreeConverter.convertBlock(TreeConverter.java:543)
    在com.google.devtools.j2objc.javac.TreeConverter.convertInner(TreeConverter.java:238)
    在com.google.devtools.j2objc.javac.TreeConverter.convert(TreeConverter.java:202)
    在com.google.devtools.j2objc.javac.TreeConverter.convertMethodDeclaration(TreeConverter.java:888)
    在com.google.devtools.j2objc.javac.TreeConverter.convertInner(TreeConverter.java:283)
    在com.google.devtools.j2objc.javac.TreeConverter.convert(TreeConverter.java:202)
    在com.google.devtools.j2objc.javac.TreeConverter.convertAbstractTypeDeclaration(TreeConverter.java:390)
    在com.google.devtools.j2objc.javac.TreeConverter.convertClassDeclaration(TreeConverter.java:603)
    在com.google.devtools.j2objc.javac.TreeConverter.convertInner(TreeConverter.java:246)
    在com.google.devtools.j2objc.javac.TreeConverter.convert(TreeConverter.java:202)
    在com.google.devtools.j2objc.javac.TreeConverter.convertCompilationUnit(TreeConverter.java:173)
    在com.google.devtools.j2objc.javac.JavacParser.parseFiles(JavacParser.java:173)
    在com.google.devtools.j2objc.pipeline.FileProcessor.processBatch(FileProcessor.java:141)
    在com.google.devtools.j2objc.pipeline.FileProcessor.processInputs(FileProcessor.java:70)
    在com.google.devtools.j2objc.pipeline.TranslationProcessor.processInputs(TranslationProcessor.java:78)
    在com.google.devtools.j2objc.J2ObjC.run(J2ObjC.java:127)
    在com.google.devtools.j2objc.J2ObjC.main(J2ObjC.java:177)

线程“主”中的异常java.lang.NullPointerException
    在com.google.devtools.j2objc.javac.JavacParser.parseFiles(JavacParser.java:175)
    在com.google.devtools.j2objc.pipeline.FileProcessor.processBatch(FileProcessor.java:141)
    在com.google.devtools.j2objc.pipeline.FileProcessor.processInputs(FileProcessor.java:70)
    在com.google.devtools.j2objc.pipeline.TranslationProcessor.processInputs(TranslationProcessor.java:78)
    在com.google.devtools.j2objc.J2ObjC.run(J2ObjC.java:127)
    在com.google.devtools.j2objc.J2ObjC.main(J2ObjC.java:177)上`

伙计们,请帮助我解决以上问题,任何人都已经遇到过此类问题。

提前致谢。

最佳答案

与大多数“ * _HOME”设置一样,您需要指定一些设置(例如JAVA_HOME,KOTLIN_HOME,GROOVY_HOME等)。编辑Settings.xconfig并将J2OBJC_HOME设置为您添加到/ etc / paths的相同路径。

下一个问题是j2objc不能与Java 9 JDK一起运行(即将推出)。好消息是,您的Mac上可以安装多个JDK,并且j2objc脚本将选择最新安装的Java 8 JDK,而不管Java 9 JDK是否是默认的。转到Oracle's Java SE Downloads page,获取最新的Java 8 JDK并安装它。

09-28 07:35