更新到 Java11 后如何修复构建

问题描述 投票:0回答:1

我确实使用 scons 2.5.0(希望更新很快就会到来),我从

OpenJDK 1.8
切换到
jdk-11.0.2
,我还将用于构建的 Eclipse 版本更改为
eclipse-rcp-2023-03-R-win32-x86_64
.

..\project\_user\TESTEnv.ini
我现在指的是:

JAVAH=C:\LIBRARIES\Java\jdk-11.0.2\bin\javac.exe
ECLIPSE_PATH=F:\Installations\Other\eclipse-rcp-2023-03-R-win32-x86_64\eclipse

我的一块

../project/TESTWKS/TESTFw/TESTKernel.m/SConscript.3dn

import tcscons
e['TC_MODULE'] = tcscons.module_name()
e['TC_JAVA_MODULE'] = 'com.tt.test.kernel.jni'

classes = e.Java(target='${VARIANT}/java/classes', source=['java/src'])

jar = e.Command(
    '#java/${TC_JAVA_MODULE}${JARSUFFIX}',
    [classes],
    [
        '${JAR} cf ${TARGET} -C '+e.Dir('${VARIANT}/java/classes').path+' . '
    ]
)

headers = e.JavaH(target='LocalGenerated/java/java', source=classes)

e.Alias(['jni'], [jar, classes, headers] )
e.Depends('jni', '3dn')

我遇到

java.h
文件的问题。 Scons 没有为我创建正确的命令,我进入控制台:

C:\LIBRARIES\Java\jdk-11.0.2\bin\javac.exe -d TESTWKS\TESTFw\TESTKernel.m\LocalGenerated\java\java -classpath TESTWKS\TESTFw\TESTKernel.m\release\java\classes -h com.tt.TEST.kernel.jni.TESTClass1 com.tt.TEST.kernel.jni.TESTClass2 com.tt.TEST.kernel.jni.TESTClass3 com.tt.TEST.kernel.jni.TESTKernel com.tt.TEST.kernel.jni.TESTClass4 com.tt.TEST.kernel.jni.TESTModelEntityIdType
error: Class names, 'com.tt.TEST.kernel.jni.TESTClass2,com.tt.TEST.kernel.jni.TESTImage
PixelFormat,com.tt.TEST.kernel.jni.TESTKernel,com.tt.TEST.kernel.jni.TESTClass4,com.tt.TEST.kernel.jni.TESTMode
lEntityIdType
,com.tt.TEST.kernel.jni.TESTVisuItem', are only 
accepted if annotation processing is explicitly requested
1 error
scons: *** 
[TESTWKS\TESTFw\TESTKernel.m\LocalGenerated\java\java\com_tt_TEST_kernel_jni_TESTClass1.h] 
Error 1
scons: building terminated because of errors.

似乎我确实错过了班级名称中的

.java
扩展名。如何巧妙地做到这一点?

我需要在控制台中这样的东西:

C:\LIBRARIES\Java\jdk-11.0.2\bin\javac.exe 
-d TESTNWKS\TESTFw\TESTKernel.m\LocalGenerated\java\java 
-classpath TESTWKS\TESTFw\TESTKernel.m\release\java\classes 
-h TESTWKS\TESTFw\TESTKernel.m\LocalGenerated\java\java TESTWKS\TESTFw\TESTKernel.m\java\src\TESTKernel.java

我知道在

JAVAHCOM
中创建了
/project/_build/scons/2.5.0/scons-local-2.5.0/SCons/Tool/javah.py
,但我不想碰这个。

eclipse scons
1个回答
0
投票

很难判断这是否是您的特定问题,但是由于某些 Java 细节随时间发生的各种变化,SCons 带有 Java 的“已知版本”列表以及如何处理它们,并拒绝了休息。 2.5.2 可能太旧以至于不知道 Java 11,如果工具设置失败,那么 SCons 根本不会将 Java 后缀输入到构建器的表映射后缀中。我相信 Java 11 已添加到 SCons 3.1 的兼容表中,但需要一些挖掘才能完全确定。

© www.soinside.com 2019 - 2024. All rights reserved.