sun.misc.Contended 不是包 sun.misc Scala 的成员
sun.misc.Contended is not a member of package sun.misc Scala
我正在将 JDK 版本从 8 更新到 11,并解决了某些并发数据结构的问题。
error: type Contended is not a member of package sun.misc
[ERROR] @sun.misc.Contended
[ERROR] ^
[ERROR] one error found
有没有办法解决这个问题?我正在使用 Scala 2.12.8
?
如果您在用户代码中使用此注释,您应该删除它,因为它没有任何作用。
Hotspot 允许在特权代码中使用此注释。来自 classFileParser.cpp:
AnnotationCollector::ID
AnnotationCollector::annotation_index(const ClassLoaderData* loader_data,
const Symbol* name) {
const vmSymbols::SID sid = vmSymbols::find_sid(name);
// Privileged code can use all annotations. Other code silently drops some.
const bool privileged = loader_data->is_the_null_class_loader_data() ||
loader_data->is_platform_class_loader_data() ||
loader_data->is_anonymous();
switch (sid) {
...
case vmSymbols::VM_SYMBOL_ENUM_NAME(jdk_internal_vm_annotation_Contended_signature): {
if (_location != _in_field && _location != _in_class) {
break; // only allow for fields and classes
}
if (!EnableContended || (RestrictContended && !privileged)) {
break; // honor privileges
}
return _jdk_internal_vm_annotation_Contended;
}
如果注释在特权代码之外使用,通常会被忽略。
但是! 看起来有一个生产级别标志可以启用 @Contended
专门针对非特权 类.
在这种情况下,您可以在编译时使用 --add-exports java.base/jdk.internal.vm.annotation=<your module>
,并改为从 jdk.internal.vm.annotation
导入注释。
然后当 运行 应用程序使用 -XX:-RestrictContended
.
我正在将 JDK 版本从 8 更新到 11,并解决了某些并发数据结构的问题。
error: type Contended is not a member of package sun.misc
[ERROR] @sun.misc.Contended
[ERROR] ^
[ERROR] one error found
有没有办法解决这个问题?我正在使用 Scala 2.12.8
?
如果您在用户代码中使用此注释,您应该删除它,因为它没有任何作用。
Hotspot 允许在特权代码中使用此注释。来自 classFileParser.cpp:
AnnotationCollector::ID
AnnotationCollector::annotation_index(const ClassLoaderData* loader_data,
const Symbol* name) {
const vmSymbols::SID sid = vmSymbols::find_sid(name);
// Privileged code can use all annotations. Other code silently drops some.
const bool privileged = loader_data->is_the_null_class_loader_data() ||
loader_data->is_platform_class_loader_data() ||
loader_data->is_anonymous();
switch (sid) {
...
case vmSymbols::VM_SYMBOL_ENUM_NAME(jdk_internal_vm_annotation_Contended_signature): {
if (_location != _in_field && _location != _in_class) {
break; // only allow for fields and classes
}
if (!EnableContended || (RestrictContended && !privileged)) {
break; // honor privileges
}
return _jdk_internal_vm_annotation_Contended;
}
如果注释在特权代码之外使用,通常会被忽略。
但是! 看起来有一个生产级别标志可以启用 @Contended
专门针对非特权 类.
在这种情况下,您可以在编译时使用 --add-exports java.base/jdk.internal.vm.annotation=<your module>
,并改为从 jdk.internal.vm.annotation
导入注释。
然后当 运行 应用程序使用 -XX:-RestrictContended
.