diff --git a/ci.jsonnet b/ci.jsonnet index dc61a36cb42..f72eb6e05f6 100644 --- a/ci.jsonnet +++ b/ci.jsonnet @@ -291,7 +291,7 @@ local contains(str, needle) = std.findSubstr(needle, str) != []; CompilerTests(defs, conf, fastdebug):: conf + requireLabsJDK(conf) + clone_graal(defs) + { name: "test-compiler" + (if fastdebug then "-fastdebug" else "") + conf.name, - timelimit: "1:30:00", + timelimit: "1:45:00", logs: ["*.log"], targets: ["gate"], environment+: { diff --git a/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp b/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp index 3acc010ff85..02e0a195138 100644 --- a/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp +++ b/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp @@ -2771,7 +2771,7 @@ void MacroAssembler::load_reserved(Register dst, break; case uint32: lr_w(dst, addr, acquire); - zero_extend(t0, t0, 32); + zero_extend(dst, dst, 32); break; default: ShouldNotReachHere(); diff --git a/src/hotspot/cpu/x86/vm_version_x86.cpp b/src/hotspot/cpu/x86/vm_version_x86.cpp index 1517e456e82..11b9aed59ff 100644 --- a/src/hotspot/cpu/x86/vm_version_x86.cpp +++ b/src/hotspot/cpu/x86/vm_version_x86.cpp @@ -1130,6 +1130,7 @@ void VM_Version::get_processor_features() { FLAG_SET_DEFAULT(UseGHASHIntrinsics, false); } +#ifdef _LP64 // ChaCha20 Intrinsics // As long as the system supports AVX as a baseline we can do a // SIMD-enabled block function. StubGenerator makes the determination @@ -1145,6 +1146,13 @@ void VM_Version::get_processor_features() { } FLAG_SET_DEFAULT(UseChaCha20Intrinsics, false); } +#else + // No support currently for ChaCha20 intrinsics on 32-bit platforms + if (UseChaCha20Intrinsics) { + warning("ChaCha20 intrinsics are not available on this CPU."); + FLAG_SET_DEFAULT(UseChaCha20Intrinsics, false); + } +#endif // _LP64 // Base64 Intrinsics (Check the condition for which the intrinsic will be active) if (UseAVX >= 2) { diff --git a/src/hotspot/share/c1/c1_globals.hpp b/src/hotspot/share/c1/c1_globals.hpp index 1c22cf16cfe..4c73d7536b5 100644 --- a/src/hotspot/share/c1/c1_globals.hpp +++ b/src/hotspot/share/c1/c1_globals.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -275,9 +275,11 @@ develop(bool, InstallMethods, true, \ "Install methods at the end of successful compilations") \ \ + /* The compiler assumes, in many places, that methods are at most 1MB. */ \ + /* Therefore, we restrict this flag to at most 1MB. */ \ develop(intx, NMethodSizeLimit, (64*K)*wordSize, \ "Maximum size of a compiled method.") \ - range(0, max_jint) \ + range(0, 1*M) \ \ develop(bool, TraceFPUStack, false, \ "Trace emulation of the FPU stack (intel only)") \ diff --git a/src/hotspot/share/gc/z/zBarrierSet.cpp b/src/hotspot/share/gc/z/zBarrierSet.cpp index 160673e8059..a82cc67754b 100644 --- a/src/hotspot/share/gc/z/zBarrierSet.cpp +++ b/src/hotspot/share/gc/z/zBarrierSet.cpp @@ -152,6 +152,19 @@ void ZBarrierSet::on_slowpath_allocation_exit(JavaThread* thread, oop new_obj) { deoptimize_allocation(thread); } +void ZBarrierSet::clone_obj_array(objArrayOop src_obj, objArrayOop dst_obj, size_t size) { + volatile zpointer* src = (volatile zpointer*)src_obj->base(); + volatile zpointer* dst = (volatile zpointer*)dst_obj->base(); + + for (const zpointer* const end = cast_from_oop(src_obj) + size; src < end; src++, dst++) { + zaddress elem = ZBarrier::load_barrier_on_oop_field(src); + // We avoid healing here because the store below colors the pointer store good, + // hence avoiding the cost of a CAS. + ZBarrier::store_barrier_on_heap_oop_field(dst, false /* heal */); + Atomic::store(dst, ZAddress::store_good(elem)); + } +} + void ZBarrierSet::print_on(outputStream* st) const { st->print_cr("ZBarrierSet"); } diff --git a/src/hotspot/share/gc/z/zBarrierSet.hpp b/src/hotspot/share/gc/z/zBarrierSet.hpp index 213f85dcea8..adba5ee15c1 100644 --- a/src/hotspot/share/gc/z/zBarrierSet.hpp +++ b/src/hotspot/share/gc/z/zBarrierSet.hpp @@ -39,6 +39,8 @@ class ZBarrierSet : public BarrierSet { static ZBarrierSetAssembler* assembler(); static bool barrier_needed(DecoratorSet decorators, BasicType type); + static void clone_obj_array(objArrayOop src, objArrayOop dst, size_t size); + virtual void on_thread_create(Thread* thread); virtual void on_thread_destroy(Thread* thread); virtual void on_thread_attach(Thread* thread); diff --git a/src/hotspot/share/gc/z/zBarrierSet.inline.hpp b/src/hotspot/share/gc/z/zBarrierSet.inline.hpp index bfbae74972d..997e5bae58d 100644 --- a/src/hotspot/share/gc/z/zBarrierSet.inline.hpp +++ b/src/hotspot/share/gc/z/zBarrierSet.inline.hpp @@ -403,14 +403,13 @@ inline bool ZBarrierSet::AccessBarrier::oop_arraycopy_i return oop_arraycopy_in_heap_no_check_cast(dst, src, length); } -class ZStoreBarrierOopClosure : public BasicOopIterateClosure { +class ZColorStoreGoodOopClosure : public BasicOopIterateClosure { public: virtual void do_oop(oop* p_) { volatile zpointer* const p = (volatile zpointer*)p_; const zpointer ptr = ZBarrier::load_atomic(p); const zaddress addr = ZPointer::uncolor(ptr); - ZBarrier::store_barrier_on_heap_oop_field(p, false /* heal */); - *p = ZAddress::store_good(addr); + Atomic::store(p, ZAddress::store_good(addr)); } virtual void do_oop(narrowOop* p) { @@ -433,6 +432,17 @@ template inline void ZBarrierSet::AccessBarrier::clone_in_heap(oop src, oop dst, size_t size) { assert_is_valid(to_zaddress(src)); + if (dst->is_objArray()) { + // Cloning an object array is similar to performing array copy. + // If an array is large enough to have its allocation segmented, + // this operation might require GC barriers. However, the intrinsics + // for cloning arrays transform the clone to an optimized allocation + // and arraycopy sequence, so the performance of this runtime call + // does not matter for object arrays. + clone_obj_array(objArrayOop(src), objArrayOop(dst), size); + return; + } + // Fix the oops ZLoadBarrierOopClosure cl; ZIterator::oop_iterate(src, &cl); @@ -440,10 +450,10 @@ inline void ZBarrierSet::AccessBarrier::clone_in_heap(o // Clone the object Raw::clone_in_heap(src, dst, size); - assert(ZHeap::heap()->is_young(to_zaddress(dst)), "ZColorStoreGoodOopClosure is only valid for young objects"); + assert(dst->is_typeArray() || ZHeap::heap()->is_young(to_zaddress(dst)), "ZColorStoreGoodOopClosure is only valid for young objects"); // Color store good before handing out - ZStoreBarrierOopClosure cl_sg; + ZColorStoreGoodOopClosure cl_sg; ZIterator::oop_iterate(dst, &cl_sg); } diff --git a/src/hotspot/share/opto/type.cpp b/src/hotspot/share/opto/type.cpp index 9763911e581..84d092f2ffd 100644 --- a/src/hotspot/share/opto/type.cpp +++ b/src/hotspot/share/opto/type.cpp @@ -4664,7 +4664,7 @@ template bool TypePtr::is_meet_subtype_of_helper_for_array } if (other_elem == nullptr && this_elem == nullptr) { - return this_one->_klass->is_subtype_of(other->_klass); + return this_one->klass()->is_subtype_of(other->klass()); } return false; @@ -5993,7 +5993,7 @@ template bool TypePtr::is_java_subtype_of_helper_for_instan return true; } - return this_one->_klass->is_subtype_of(other->_klass) && this_one->_interfaces->contains(other->_interfaces); + return this_one->klass()->is_subtype_of(other->klass()) && this_one->_interfaces->contains(other->_interfaces); } bool TypeInstKlassPtr::is_java_subtype_of_helper(const TypeKlassPtr* other, bool this_exact, bool other_exact) const { @@ -6008,7 +6008,7 @@ template bool TypePtr::is_same_java_type_as_helper_for_inst if (!this_one->is_instance_type(other)) { return false; } - return this_one->_klass->equals(other->_klass) && this_one->_interfaces->eq(other->_interfaces); + return this_one->klass()->equals(other->klass()) && this_one->_interfaces->eq(other->_interfaces); } bool TypeInstKlassPtr::is_same_java_type_as_helper(const TypeKlassPtr* other) const { @@ -6022,7 +6022,7 @@ template bool TypePtr::maybe_java_subtype_of_helper_for_ins } if (this_one->is_array_type(other)) { - return !this_exact && this_one->_klass->equals(ciEnv::current()->Object_klass()) && other->_interfaces->contains(this_one->_interfaces); + return !this_exact && this_one->klass()->equals(ciEnv::current()->Object_klass()) && other->_interfaces->contains(this_one->_interfaces); } assert(this_one->is_instance_type(other), "unsupported"); @@ -6031,12 +6031,12 @@ template bool TypePtr::maybe_java_subtype_of_helper_for_ins return this_one->is_java_subtype_of(other); } - if (!this_one->_klass->is_subtype_of(other->_klass) && !other->_klass->is_subtype_of(this_one->_klass)) { + if (!this_one->klass()->is_subtype_of(other->klass()) && !other->klass()->is_subtype_of(this_one->klass())) { return false; } if (this_exact) { - return this_one->_klass->is_subtype_of(other->_klass) && this_one->_interfaces->contains(other->_interfaces); + return this_one->klass()->is_subtype_of(other->klass()) && this_one->_interfaces->contains(other->_interfaces); } return true; @@ -6116,7 +6116,7 @@ uint TypeAryKlassPtr::hash(void) const { //----------------------compute_klass------------------------------------------ // Compute the defining klass for this class -ciKlass* TypeAryPtr::compute_klass(DEBUG_ONLY(bool verify)) const { +ciKlass* TypeAryPtr::compute_klass() const { // Compute _klass based on element type. ciKlass* k_ary = nullptr; const TypeInstPtr *tinst; @@ -6137,28 +6137,7 @@ ciKlass* TypeAryPtr::compute_klass(DEBUG_ONLY(bool verify)) const { // and object; Top occurs when doing join on Bottom. // Leave k_ary at null. } else { - // Cannot compute array klass directly from basic type, - // since subtypes of TypeInt all have basic type T_INT. -#ifdef ASSERT - if (verify && el->isa_int()) { - // Check simple cases when verifying klass. - BasicType bt = T_ILLEGAL; - if (el == TypeInt::BYTE) { - bt = T_BYTE; - } else if (el == TypeInt::SHORT) { - bt = T_SHORT; - } else if (el == TypeInt::CHAR) { - bt = T_CHAR; - } else if (el == TypeInt::INT) { - bt = T_INT; - } else { - return _klass; // just return specified klass - } - return ciTypeArrayKlass::make(bt); - } -#endif - assert(!el->isa_int(), - "integral arrays must be pre-equipped with a class"); + assert(!el->isa_int(), "integral arrays must be pre-equipped with a class"); // Compute array klass directly from basic type k_ary = ciTypeArrayKlass::make(el->basic_type()); } @@ -6434,7 +6413,7 @@ template bool TypePtr::is_java_subtype_of_helper_for_array( return this_one->is_reference_type(this_elem)->is_java_subtype_of_helper(this_one->is_reference_type(other_elem), this_exact, other_exact); } if (this_elem == nullptr && other_elem == nullptr) { - return this_one->_klass->is_subtype_of(other->_klass); + return this_one->klass()->is_subtype_of(other->klass()); } return false; } @@ -6466,8 +6445,7 @@ template bool TypePtr::is_same_java_type_as_helper_for_arra return this_one->is_reference_type(this_elem)->is_same_java_type_as(this_one->is_reference_type(other_elem)); } if (other_elem == nullptr && this_elem == nullptr) { - assert(this_one->_klass != nullptr && other->_klass != nullptr, ""); - return this_one->_klass->equals(other->_klass); + return this_one->klass()->equals(other->klass()); } return false; } @@ -6487,7 +6465,7 @@ template bool TypePtr::maybe_java_subtype_of_helper_for_arr return true; } if (this_one->is_instance_type(other)) { - return other->_klass->equals(ciEnv::current()->Object_klass()) && other->_interfaces->intersection_with(this_one->_interfaces)->eq(other->_interfaces); + return other->klass()->equals(ciEnv::current()->Object_klass()) && other->_interfaces->intersection_with(this_one->_interfaces)->eq(other->_interfaces); } assert(this_one->is_array_type(other), ""); @@ -6506,7 +6484,7 @@ template bool TypePtr::maybe_java_subtype_of_helper_for_arr return this_one->is_reference_type(this_elem)->maybe_java_subtype_of_helper(this_one->is_reference_type(other_elem), this_exact, other_exact); } if (other_elem == nullptr && this_elem == nullptr) { - return this_one->_klass->is_subtype_of(other->_klass); + return this_one->klass()->is_subtype_of(other->klass()); } return false; } diff --git a/src/hotspot/share/opto/type.hpp b/src/hotspot/share/opto/type.hpp index c65ff4af012..de9b52b4cc4 100644 --- a/src/hotspot/share/opto/type.hpp +++ b/src/hotspot/share/opto/type.hpp @@ -1413,7 +1413,7 @@ class TypeAryPtr : public TypeOopPtr { const TypeAry *_ary; // Array we point into const bool _is_autobox_cache; - ciKlass* compute_klass(DEBUG_ONLY(bool verify = false)) const; + ciKlass* compute_klass() const; // A pointer to delay allocation to Type::Initialize_shared() diff --git a/src/hotspot/share/services/heapDumper.cpp b/src/hotspot/share/services/heapDumper.cpp index 18b91b6f289..a46101f6d8d 100644 --- a/src/hotspot/share/services/heapDumper.cpp +++ b/src/hotspot/share/services/heapDumper.cpp @@ -1473,6 +1473,25 @@ void SymbolTableDumper::do_symbol(Symbol** p) { } } +// Support class used to generate HPROF_GC_CLASS_DUMP records + +class ClassDumper : public KlassClosure { + private: + AbstractDumpWriter* _writer; + AbstractDumpWriter* writer() const { return _writer; } + + public: + ClassDumper(AbstractDumpWriter* writer) : _writer(writer) {} + + void do_klass(Klass* k) { + if (k->is_instance_klass()) { + DumperSupport::dump_instance_class(writer(), k); + } else { + DumperSupport::dump_array_class(writer(), k); + } + } +}; + // Support class used to generate HPROF_GC_ROOT_JNI_LOCAL records class JNILocalsDumper : public OopClosure { @@ -1860,21 +1879,25 @@ vframe* ThreadDumper::get_top_frame() const { return nullptr; } +// Callback to dump thread-related data for unmounted virtual threads; +// implemented by VM_HeapDumper. +class UnmountedVThreadDumper { + public: + virtual void dump_vthread(oop vt, AbstractDumpWriter* segment_writer) = 0; +}; -class VM_HeapDumper; - -// Support class using when iterating over the heap. +// Support class used when iterating over the heap. class HeapObjectDumper : public ObjectClosure { private: AbstractDumpWriter* _writer; AbstractDumpWriter* writer() { return _writer; } + UnmountedVThreadDumper* _vthread_dumper; DumperClassCacheTable _class_cache; public: - HeapObjectDumper(AbstractDumpWriter* writer) { - _writer = writer; - } + HeapObjectDumper(AbstractDumpWriter* writer, UnmountedVThreadDumper* vthread_dumper) + : _writer(writer), _vthread_dumper(vthread_dumper) {} // called for each object in the heap void do_object(oop o); @@ -1895,6 +1918,9 @@ void HeapObjectDumper::do_object(oop o) { if (o->is_instance()) { // create a HPROF_GC_INSTANCE record for each object DumperSupport::dump_instance(writer(), o, &_class_cache); + if (java_lang_VirtualThread::is_instance(o) && ThreadDumper::should_dump_vthread(o)) { + _vthread_dumper->dump_vthread(o, writer()); + } } else if (o->is_objArray()) { // create a HPROF_GC_OBJ_ARRAY_DUMP record for each object array DumperSupport::dump_object_array(writer(), objArrayOop(o)); @@ -1908,16 +1934,52 @@ void HeapObjectDumper::do_object(oop o) { class DumperController : public CHeapObj { private: Monitor* _lock; + Mutex* _global_writer_lock; + const uint _dumper_number; uint _complete_number; + bool _started; // VM dumper started and acquired global writer lock + public: DumperController(uint number) : - _lock(new (std::nothrow) PaddedMonitor(Mutex::safepoint, "DumperController_lock")), + // _lock and _global_writer_lock are used for synchronization between GC worker threads inside safepoint, + // so we lock with _no_safepoint_check_flag. + // signal_start() acquires _lock when global writer is locked, + // its rank must be less than _global_writer_lock rank. + _lock(new (std::nothrow) PaddedMonitor(Mutex::nosafepoint - 1, "DumperController_lock")), + _global_writer_lock(new (std::nothrow) Mutex(Mutex::nosafepoint, "DumpWriter_lock")), _dumper_number(number), - _complete_number(0) { } + _complete_number(0), + _started(false) + {} + + ~DumperController() { + delete _lock; + delete _global_writer_lock; + } + + // parallel (non VM) dumpers must wait until VM dumper acquires global writer lock + void wait_for_start_signal() { + MonitorLocker ml(_lock, Mutex::_no_safepoint_check_flag); + while (_started == false) { + ml.wait(); + } + } - ~DumperController() { delete _lock; } + void signal_start() { + MonitorLocker ml(_lock, Mutex::_no_safepoint_check_flag); + _started = true; + ml.notify_all(); + } + + void lock_global_writer() { + _global_writer_lock->lock_without_safepoint_check(); + } + + void unlock_global_writer() { + _global_writer_lock->unlock(); + } void dumper_complete(DumpWriter* local_writer, DumpWriter* global_writer) { MonitorLocker ml(_lock, Mutex::_no_safepoint_check_flag); @@ -1946,7 +2008,7 @@ class DumpMerger : public StackObj { int _dump_seq; private: - void merge_file(char* path); + void merge_file(const char* path); void merge_done(); void set_error(const char* msg); @@ -1958,8 +2020,28 @@ class DumpMerger : public StackObj { _dump_seq(dump_seq) {} void do_merge(); + + // returns path for the parallel DumpWriter (resource allocated) + static char* get_writer_path(const char* base_path, int seq); + }; +char* DumpMerger::get_writer_path(const char* base_path, int seq) { + // approximate required buffer size + size_t buf_size = strlen(base_path) + + 2 // ".p" + + 10 // number (that's enough for 2^32 parallel dumpers) + + 1; // '\0' + + char* path = NEW_RESOURCE_ARRAY(char, buf_size); + memset(path, 0, buf_size); + + os::snprintf(path, buf_size, "%s.p%d", base_path, seq); + + return path; +} + + void DumpMerger::merge_done() { // Writes the HPROF_HEAP_DUMP_END record. if (!_has_error) { @@ -1980,8 +2062,7 @@ void DumpMerger::set_error(const char* msg) { // Merge segmented heap files via sendfile, it's more efficient than the // read+write combination, which would require transferring data to and from // user space. -void DumpMerger::merge_file(char* path) { - assert(!SafepointSynchronize::is_at_safepoint(), "merging happens outside safepoint"); +void DumpMerger::merge_file(const char* path) { TraceTime timer("Merge segmented heap file directly", TRACETIME_LOG(Info, heapdump)); int segment_fd = os::open(path, O_RDONLY, 0); @@ -2018,8 +2099,7 @@ void DumpMerger::merge_file(char* path) { } #else // Generic implementation using read+write -void DumpMerger::merge_file(char* path) { - assert(!SafepointSynchronize::is_at_safepoint(), "merging happens outside safepoint"); +void DumpMerger::merge_file(const char* path) { TraceTime timer("Merge segmented heap file", TRACETIME_LOG(Info, heapdump)); fileStream segment_fs(path, "rb"); @@ -2044,7 +2124,6 @@ void DumpMerger::merge_file(char* path) { #endif void DumpMerger::do_merge() { - assert(!SafepointSynchronize::is_at_safepoint(), "merging happens outside safepoint"); TraceTime timer("Merge heap files complete", TRACETIME_LOG(Info, heapdump)); // Since contents in segmented heap file were already zipped, we don't need to zip @@ -2054,10 +2133,9 @@ void DumpMerger::do_merge() { // Merge the content of the remaining files into base file. Regardless of whether // the merge process is successful or not, these segmented files will be deleted. - char path[JVM_MAXPATHLEN]; for (int i = 0; i < _dump_seq; i++) { - memset(path, 0, JVM_MAXPATHLEN); - os::snprintf(path, JVM_MAXPATHLEN, "%s.p%d", _path, i); + ResourceMark rm; + const char* path = get_writer_path(_path, i); if (!_has_error) { merge_file(path); } @@ -2087,7 +2165,7 @@ class VM_HeapDumpMerge : public VM_Operation { }; // The VM operation that performs the heap dump -class VM_HeapDumper : public VM_GC_Operation, public WorkerTask { +class VM_HeapDumper : public VM_GC_Operation, public WorkerTask, public UnmountedVThreadDumper { private: static VM_HeapDumper* _global_dumper; static DumpWriter* _global_writer; @@ -2107,10 +2185,15 @@ class VM_HeapDumper : public VM_GC_Operation, public WorkerTask { uint _num_dumper_threads; DumperController* _dumper_controller; ParallelObjectIterator* _poi; - // worker id of VMDumper thread. - static const size_t VMDumperWorkerId = 0; + + // Dumper id of VMDumper thread. + static const int VMDumperId = 0; // VM dumper dumps both heap and non-heap data, other dumpers dump heap-only data. - static bool is_vm_dumper(uint worker_id) { return worker_id == VMDumperWorkerId; } + static bool is_vm_dumper(int dumper_id) { return dumper_id == VMDumperId; } + // the 1st dumper calling get_next_dumper_id becomes VM dumper + int get_next_dumper_id() { + return Atomic::fetch_then_add(&_dump_seq, 1); + } // accessors and setters static VM_HeapDumper* dumper() { assert(_global_dumper != nullptr, "Error"); return _global_dumper; } @@ -2129,17 +2212,11 @@ class VM_HeapDumper : public VM_GC_Operation, public WorkerTask { bool skip_operation() const; - // create dump writer for every parallel dump thread - DumpWriter* create_local_writer(); - - // writes a HPROF_LOAD_CLASS record + // writes a HPROF_LOAD_CLASS record to global writer static void do_load_class(Klass* k); - // writes a HPROF_GC_CLASS_DUMP record for the given class - static void do_class_dump(Klass* k); - // HPROF_GC_ROOT_THREAD_OBJ records for platform and mounted virtual threads - void dump_threads(); + void dump_threads(AbstractDumpWriter* writer); void add_class_serial_number(Klass* k, int serial_num) { _klass_map->at_put_grow(serial_num, k); @@ -2150,7 +2227,7 @@ class VM_HeapDumper : public VM_GC_Operation, public WorkerTask { } // HPROF_TRACE and HPROF_FRAME records for platform and mounted virtual threads - void dump_stack_traces(); + void dump_stack_traces(AbstractDumpWriter* writer); public: VM_HeapDumper(DumpWriter* writer, bool gc_before_heap_dump, bool oome, uint num_dump_threads) : @@ -2168,7 +2245,7 @@ class VM_HeapDumper : public VM_GC_Operation, public WorkerTask { _thread_serial_num = 1; _frame_serial_num = 1; - _dump_seq = 0; + _dump_seq = VMDumperId; _num_dumper_threads = num_dump_threads; _dumper_controller = nullptr; _poi = nullptr; @@ -2202,12 +2279,15 @@ class VM_HeapDumper : public VM_GC_Operation, public WorkerTask { } int dump_seq() { return _dump_seq; } bool is_parallel_dump() { return _num_dumper_threads > 1; } - bool can_parallel_dump(WorkerThreads* workers); + void prepare_parallel_dump(WorkerThreads* workers); VMOp_Type type() const { return VMOp_HeapDumper; } virtual bool doit_prologue(); void doit(); void work(uint worker_id); + + // UnmountedVThreadDumper implementation + void dump_vthread(oop vt, AbstractDumpWriter* segment_writer); }; VM_HeapDumper* VM_HeapDumper::_global_dumper = nullptr; @@ -2251,22 +2331,13 @@ void VM_HeapDumper::do_load_class(Klass* k) { writer()->write_symbolID(name); } -// writes a HPROF_GC_CLASS_DUMP record for the given class -void VM_HeapDumper::do_class_dump(Klass* k) { - if (k->is_instance_klass()) { - DumperSupport::dump_instance_class(writer(), k); - } else { - DumperSupport::dump_array_class(writer(), k); - } -} - // Write a HPROF_GC_ROOT_THREAD_OBJ record for platform/carrier and mounted virtual threads. // Then walk the stack so that locals and JNI locals are dumped. -void VM_HeapDumper::dump_threads() { - for (int i = 0; i < _thread_dumpers_count; i++) { - _thread_dumpers[i]->dump_thread_obj(writer()); - _thread_dumpers[i]->dump_stack_refs(writer()); - } +void VM_HeapDumper::dump_threads(AbstractDumpWriter* writer) { + for (int i = 0; i < _thread_dumpers_count; i++) { + _thread_dumpers[i]->dump_thread_obj(writer); + _thread_dumpers[i]->dump_stack_refs(writer); + } } bool VM_HeapDumper::doit_prologue() { @@ -2280,31 +2351,21 @@ bool VM_HeapDumper::doit_prologue() { return VM_GC_Operation::doit_prologue(); } -bool VM_HeapDumper::can_parallel_dump(WorkerThreads* workers) { - bool can_parallel = true; +void VM_HeapDumper::prepare_parallel_dump(WorkerThreads* workers) { uint num_active_workers = workers != nullptr ? workers->active_workers() : 0; uint num_requested_dump_threads = _num_dumper_threads; // check if we can dump in parallel based on requested and active threads if (num_active_workers <= 1 || num_requested_dump_threads <= 1) { _num_dumper_threads = 1; - can_parallel = false; } else { - // check if we have extra path room to accommodate segmented heap files - const char* base_path = writer()->get_file_path(); - assert(base_path != nullptr, "sanity check"); - if ((strlen(base_path) + 7/*.p\d\d\d\d\0*/) >= JVM_MAXPATHLEN) { - _num_dumper_threads = 1; - can_parallel = false; - } else { - _num_dumper_threads = clamp(num_requested_dump_threads, 2U, num_active_workers); - } + _num_dumper_threads = clamp(num_requested_dump_threads, 2U, num_active_workers); } - + _dumper_controller = new (std::nothrow) DumperController(_num_dumper_threads); + bool can_parallel = _num_dumper_threads > 1; log_info(heapdump)("Requested dump threads %u, active dump threads %u, " "actual dump threads %u, parallelism %s", num_requested_dump_threads, num_active_workers, _num_dumper_threads, can_parallel ? "true" : "false"); - return can_parallel; } // The VM operation that dumps the heap. The dump consists of the following @@ -2352,11 +2413,11 @@ void VM_HeapDumper::doit() { set_global_writer(); WorkerThreads* workers = ch->safepoint_workers(); - if (!can_parallel_dump(workers)) { - work(VMDumperWorkerId); + prepare_parallel_dump(workers); + + if (!is_parallel_dump()) { + work(VMDumperId); } else { - uint heap_only_dumper_threads = _num_dumper_threads - 1 /* VMDumper thread */; - _dumper_controller = new (std::nothrow) DumperController(heap_only_dumper_threads); ParallelObjectIterator poi(_num_dumper_threads); _poi = &poi; workers->run_task(this, _num_dumper_threads); @@ -2368,26 +2429,19 @@ void VM_HeapDumper::doit() { clear_global_writer(); } -// prepare DumpWriter for every parallel dump thread -DumpWriter* VM_HeapDumper::create_local_writer() { - char* path = NEW_RESOURCE_ARRAY(char, JVM_MAXPATHLEN); - memset(path, 0, JVM_MAXPATHLEN); - - // generate segmented heap file path - const char* base_path = writer()->get_file_path(); - // share global compressor, local DumpWriter is not responsible for its life cycle - AbstractCompressor* compressor = writer()->compressor(); - int seq = Atomic::fetch_then_add(&_dump_seq, 1); - os::snprintf(path, JVM_MAXPATHLEN, "%s.p%d", base_path, seq); - - // create corresponding writer for that - DumpWriter* local_writer = new DumpWriter(path, writer()->is_overwrite(), compressor); - return local_writer; -} - void VM_HeapDumper::work(uint worker_id) { // VM Dumper works on all non-heap data dumping and part of heap iteration. - if (is_vm_dumper(worker_id)) { + int dumper_id = get_next_dumper_id(); + + if (is_vm_dumper(dumper_id)) { + // lock global writer, it will be unlocked after VM Dumper finishes with non-heap data + _dumper_controller->lock_global_writer(); + _dumper_controller->signal_start(); + } else { + _dumper_controller->wait_for_start_signal(); + } + + if (is_vm_dumper(dumper_id)) { TraceTime timer("Dump non-objects", TRACETIME_LOG(Info, heapdump)); // Write the file header - we always use 1.0.2 const char* header = "JAVA PROFILE 1.0.2"; @@ -2409,79 +2463,82 @@ void VM_HeapDumper::work(uint worker_id) { // write HPROF_FRAME and HPROF_TRACE records // this must be called after _klass_map is built when iterating the classes above. - dump_stack_traces(); + dump_stack_traces(writer()); - // HPROF_HEAP_DUMP/HPROF_HEAP_DUMP_SEGMENT starts here + // unlock global writer, so parallel dumpers can dump stack traces of unmounted virtual threads + _dumper_controller->unlock_global_writer(); + } - // Writes HPROF_GC_CLASS_DUMP records - { - LockedClassesDo locked_dump_class(&do_class_dump); - ClassLoaderDataGraph::classes_do(&locked_dump_class); - } - - // HPROF_GC_ROOT_THREAD_OBJ + frames + jni locals - dump_threads(); - - // HPROF_GC_ROOT_JNI_GLOBAL - JNIGlobalsDumper jni_dumper(writer()); - JNIHandles::oops_do(&jni_dumper); - // technically not jni roots, but global roots - // for things like preallocated throwable backtraces - Universe::vm_global()->oops_do(&jni_dumper); - // HPROF_GC_ROOT_STICKY_CLASS - // These should be classes in the null class loader data, and not all classes - // if !ClassUnloading - StickyClassDumper class_dumper(writer()); - ClassLoaderData::the_null_class_loader_data()->classes_do(&class_dumper); - } - - // Heap iteration. - // writes HPROF_GC_INSTANCE_DUMP records. - // After each sub-record is written check_segment_length will be invoked - // to check if the current segment exceeds a threshold. If so, a new - // segment is started. - // The HPROF_GC_CLASS_DUMP and HPROF_GC_INSTANCE_DUMP are the vast bulk - // of the heap dump. - if (!is_parallel_dump()) { - assert(is_vm_dumper(worker_id), "must be"); - // == Serial dump - ResourceMark rm; - TraceTime timer("Dump heap objects", TRACETIME_LOG(Info, heapdump)); - HeapObjectDumper obj_dumper(writer()); - Universe::heap()->object_iterate(&obj_dumper); - writer()->finish_dump_segment(); - // Writes the HPROF_HEAP_DUMP_END record because merge does not happen in serial dump - DumperSupport::end_of_dump(writer()); - writer()->flush(); - } else { - // == Parallel dump - ResourceMark rm; - TraceTime timer("Dump heap objects in parallel", TRACETIME_LOG(Info, heapdump)); - DumpWriter* local_writer = is_vm_dumper(worker_id) ? writer() : create_local_writer(); - if (!local_writer->has_error()) { - HeapObjectDumper obj_dumper(local_writer); - _poi->object_iterate(&obj_dumper, worker_id); - local_writer->finish_dump_segment(); - local_writer->flush(); - } - if (is_vm_dumper(worker_id)) { - _dumper_controller->wait_all_dumpers_complete(); + // HPROF_HEAP_DUMP/HPROF_HEAP_DUMP_SEGMENT starts here + + ResourceMark rm; + // share global compressor, local DumpWriter is not responsible for its life cycle + DumpWriter segment_writer(DumpMerger::get_writer_path(writer()->get_file_path(), dumper_id), + writer()->is_overwrite(), writer()->compressor()); + if (!segment_writer.has_error()) { + if (is_vm_dumper(dumper_id)) { + // dump some non-heap subrecords to heap dump segment + TraceTime timer("Dump non-objects (part 2)", TRACETIME_LOG(Info, heapdump)); + // Writes HPROF_GC_CLASS_DUMP records + ClassDumper class_dumper(&segment_writer); + ClassLoaderDataGraph::classes_do(&class_dumper); + + // HPROF_GC_ROOT_THREAD_OBJ + frames + jni locals + dump_threads(&segment_writer); + + // HPROF_GC_ROOT_JNI_GLOBAL + JNIGlobalsDumper jni_dumper(&segment_writer); + JNIHandles::oops_do(&jni_dumper); + // technically not jni roots, but global roots + // for things like preallocated throwable backtraces + Universe::vm_global()->oops_do(&jni_dumper); + // HPROF_GC_ROOT_STICKY_CLASS + // These should be classes in the null class loader data, and not all classes + // if !ClassUnloading + StickyClassDumper stiky_class_dumper(&segment_writer); + ClassLoaderData::the_null_class_loader_data()->classes_do(&stiky_class_dumper); + } + + // Heap iteration. + // writes HPROF_GC_INSTANCE_DUMP records. + // After each sub-record is written check_segment_length will be invoked + // to check if the current segment exceeds a threshold. If so, a new + // segment is started. + // The HPROF_GC_CLASS_DUMP and HPROF_GC_INSTANCE_DUMP are the vast bulk + // of the heap dump. + + TraceTime timer(is_parallel_dump() ? "Dump heap objects in parallel" : "Dump heap objects", TRACETIME_LOG(Info, heapdump)); + HeapObjectDumper obj_dumper(&segment_writer, this); + if (!is_parallel_dump()) { + Universe::heap()->object_iterate(&obj_dumper); } else { - _dumper_controller->dumper_complete(local_writer, writer()); - delete local_writer; - return; + // == Parallel dump + _poi->object_iterate(&obj_dumper, worker_id); } + + segment_writer.finish_dump_segment(); + segment_writer.flush(); + } + + _dumper_controller->dumper_complete(&segment_writer, writer()); + + if (is_vm_dumper(dumper_id)) { + _dumper_controller->wait_all_dumpers_complete(); + + // flush global writer + writer()->flush(); + + // At this point, all fragments of the heapdump have been written to separate files. + // We need to merge them into a complete heapdump and write HPROF_HEAP_DUMP_END at that time. } - // At this point, all fragments of the heapdump have been written to separate files. - // We need to merge them into a complete heapdump and write HPROF_HEAP_DUMP_END at that time. } -void VM_HeapDumper::dump_stack_traces() { +void VM_HeapDumper::dump_stack_traces(AbstractDumpWriter* writer) { // write a HPROF_TRACE record without any frames to be referenced as object alloc sites - DumperSupport::write_header(writer(), HPROF_TRACE, 3 * sizeof(u4)); - writer()->write_u4((u4)STACK_TRACE_ID); - writer()->write_u4(0); // thread number - writer()->write_u4(0); // frame count + DumperSupport::write_header(writer, HPROF_TRACE, 3 * sizeof(u4)); + writer->write_u4((u4)STACK_TRACE_ID); + writer->write_u4(0); // thread number + writer->write_u4(0); // frame count // max number if every platform thread is carrier with mounted virtual thread _thread_dumpers = NEW_C_HEAP_ARRAY(ThreadDumper*, Threads::number_of_threads() * 2, mtInternal); @@ -2505,7 +2562,7 @@ void VM_HeapDumper::dump_stack_traces() { add_oom_frame = false; } thread_dumper->init_serial_nums(&_thread_serial_num, &_frame_serial_num); - thread_dumper->dump_stack_traces(writer(), _klass_map); + thread_dumper->dump_stack_traces(writer, _klass_map); } // platform or carrier thread @@ -2515,11 +2572,27 @@ void VM_HeapDumper::dump_stack_traces() { thread_dumper->add_oom_frame(_oome_constructor); } thread_dumper->init_serial_nums(&_thread_serial_num, &_frame_serial_num); - thread_dumper->dump_stack_traces(writer(), _klass_map); + thread_dumper->dump_stack_traces(writer, _klass_map); } } } +void VM_HeapDumper::dump_vthread(oop vt, AbstractDumpWriter* segment_writer) { + // unmounted vthread has no JavaThread + ThreadDumper thread_dumper(ThreadDumper::ThreadType::UnmountedVirtual, nullptr, vt); + thread_dumper.init_serial_nums(&_thread_serial_num, &_frame_serial_num); + + // write HPROF_TRACE/HPROF_FRAME records to global writer + _dumper_controller->lock_global_writer(); + thread_dumper.dump_stack_traces(writer(), _klass_map); + _dumper_controller->unlock_global_writer(); + + // write HPROF_GC_ROOT_THREAD_OBJ/HPROF_GC_ROOT_JAVA_FRAME/HPROF_GC_ROOT_JNI_LOCAL subrecord + // to segment writer + thread_dumper.dump_thread_obj(segment_writer); + thread_dumper.dump_stack_refs(segment_writer); +} + // dump the heap to given path. int HeapDumper::dump(const char* path, outputStream* out, int compression, bool overwrite, uint num_dump_threads) { assert(path != nullptr && strlen(path) > 0, "path missing"); @@ -2561,28 +2634,27 @@ int HeapDumper::dump(const char* path, outputStream* out, int compression, bool // record any error that the writer may have encountered set_error(writer.error()); - // For serial dump, once VM_HeapDumper completes, the whole heap dump process - // is done, no further phases needed. For parallel dump, the whole heap dump - // process is done in two phases + // Heap dump process is done in two phases // // Phase 1: Concurrent threads directly write heap data to multiple heap files. // This is done by VM_HeapDumper, which is performed within safepoint. // // Phase 2: Merge multiple heap files into one complete heap dump file. // This is done by DumpMerger, which is performed outside safepoint - if (dumper.is_parallel_dump()) { - DumpMerger merger(path, &writer, dumper.dump_seq()); - Thread* current_thread = Thread::current(); - if (current_thread->is_AttachListener_thread()) { - // perform heapdump file merge operation in the current thread prevents us - // from occupying the VM Thread, which in turn affects the occurrence of - // GC and other VM operations. - merger.do_merge(); - } else { - // otherwise, performs it by VM thread - VM_HeapDumpMerge op(&merger); - VMThread::execute(&op); - } + + DumpMerger merger(path, &writer, dumper.dump_seq()); + Thread* current_thread = Thread::current(); + if (current_thread->is_AttachListener_thread()) { + // perform heapdump file merge operation in the current thread prevents us + // from occupying the VM Thread, which in turn affects the occurrence of + // GC and other VM operations. + merger.do_merge(); + } else { + // otherwise, performs it by VM thread + VM_HeapDumpMerge op(&merger); + VMThread::execute(&op); + } + if (writer.error() != nullptr) { set_error(writer.error()); } diff --git a/src/java.base/share/classes/java/lang/StringUTF16.java b/src/java.base/share/classes/java/lang/StringUTF16.java index 42a1fa5ed21..afc45446ebf 100644 --- a/src/java.base/share/classes/java/lang/StringUTF16.java +++ b/src/java.base/share/classes/java/lang/StringUTF16.java @@ -420,7 +420,7 @@ public static byte[] toBytes(int[] val, int index, int len) { int n = computeCodePointSize(val, index, end); byte[] buf = newBytesFor(n); - return extractCodepoints(val, index, len, buf, 0); + return extractCodepoints(val, index, end, buf, 0); } public static byte[] toBytes(char c) { diff --git a/src/java.base/share/classes/java/time/zone/ZoneRules.java b/src/java.base/share/classes/java/time/zone/ZoneRules.java index 480ff2bb27c..5945e801f15 100644 --- a/src/java.base/share/classes/java/time/zone/ZoneRules.java +++ b/src/java.base/share/classes/java/time/zone/ZoneRules.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -828,9 +828,9 @@ public Duration getDaylightSavings(Instant instant) { * This default implementation compares the {@link #getOffset(java.time.Instant) actual} * and {@link #getStandardOffset(java.time.Instant) standard} offsets. * - * @param instant the instant to find the offset information for, not null, but null + * @param instant the instant to check the daylight savings for, not null, but null * may be ignored if the rules have a single offset for all instants - * @return the standard offset, not null + * @return true if the specified instant is in daylight savings, false otherwise. */ public boolean isDaylightSavings(Instant instant) { return (getStandardOffset(instant).equals(getOffset(instant)) == false); diff --git a/src/java.base/share/classes/sun/launcher/resources/launcher_de.properties b/src/java.base/share/classes/sun/launcher/resources/launcher_de.properties index d6c988b1752..5da8b4bea5c 100644 --- a/src/java.base/share/classes/sun/launcher/resources/launcher_de.properties +++ b/src/java.base/share/classes/sun/launcher/resources/launcher_de.properties @@ -24,39 +24,39 @@ # # Translators please note do not translate the options themselves -java.launcher.opt.header = Verwendung: {0} [Optionen] [args...]\n (zur Ausführung einer Klasse)\n oder {0} [Optionen] -jar [args...]\n (zur Ausführung einer JAR-Datei)\n oder {0} [Optionen] -m [/] [args...]\n {0} [Optionen] --module [/] [args...]\n (zur Ausführung der Hauptklasse in einem Modul)\n oder {0} [Optionen] [args]\n (zur Ausführung eines Programms mit einer einzelnen Quelldatei)\n\n Argumente, die auf die Hauptklasse, die Quelldatei, -jar , -m oder --module\n / folgen, werden als Argumente für die\nHauptklasse übergeben.\n\n Dabei umfasst "Optionen" Folgendes:\n\n +java.launcher.opt.header = Verwendung: {0} [Optionen] [args...]\n (zur Ausführung einer Klasse)\n oder {0} [Optionen] -jar [args...]\n (zur Ausführung einer JAR-Datei)\n oder {0} [Optionen] -m [/] [args...]\n {0} [Optionen] --module [/] [args...]\n (zur Ausführung der Hauptklasse in einem Modul)\n oder {0} [Optionen] [args]\n (zur Ausführung eines Programms mit einer Quelldatei)\n\n Argumente, die auf die Hauptklasse, die Quelldatei, -jar , -m oder --module\n / folgen, werden als Argumente für die\nHauptklasse übergeben.\n\n Dabei umfasst "Optionen" Folgendes:\n\n java.launcher.opt.vmselect =\ {0}\t zur Auswahl der "{1}" VM\n java.launcher.opt.hotspot =\ {0}\t ist ein Synonym für die "{1}" VM [verworfen]\n # Translators please note do not translate the options themselves -java.launcher.opt.footer = \ -cp \n -classpath \n --class-path \n Eine durch {0} getrennte Liste mit Verzeichnissen, JAR-Archiven\n und ZIP-Archiven, in denen nach Klassendateien gesucht wird.\n -p \n --module-path ...\n Eine durch {0} getrennte Liste mit Elementen, von denen jedes Element ein Dateipfad\n zu einem Modul oder einem Verzeichnis mit Modulen ist. Jedes Modul ist entweder\n ein modulares JAR oder ein entpacktes Modulverzeichnis.\n --upgrade-module-path ...\n Eine durch {0} getrennte Liste mit Elementen, von denen jedes Element ein Dateipfad\n zu einem Modul oder einem Verzeichnis mit Modulen ist,\n um upgradefähige Module im Laufzeitimage zu ersetzen. Jedes Modul ist entweder\n ein modulares JAR oder ein entpacktes Modulverzeichnis.\n --add-modules [,...]\n Root-Module, die zusätzlich zum anfänglichen Modul aufgelöst werden sollen.\n kann auch wie folgt lauten: ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --enable-native-access [,...]\n Module, die eingeschränkte native Vorgänge ausführen dürfen.\n kann auch ALL-UNNAMED lauten.\n --list-modules\n Listet beobachtbare Module auf und beendet den Vorgang\n -d \n --describe-module \n Beschreibt ein Modul und beendet den Vorgang\n --dry-run Erstellt eine VM und lädt die Hauptklasse, führt aber nicht die Hauptmethode aus.\n Die Option "--dry-run" kann nützlich sein, um die\n Befehlszeilenoptionen, wie die Modulsystemkonfiguration, zu validieren.\n --validate-modules\n Validiert alle Module und beendet den Vorgang\n Die Option "--validate-modules" kann nützlich sein, um\n Konflikte und andere Fehler mit Modulen auf dem Modulpfad zu ermitteln.\n -D=\n Legt eine Systemeigenschaft fest\n -verbose:[class|module|gc|jni]\n Aktiviert die Verbose-Ausgabe für das angegebene Subsystem\n -version Gibt die Produktversion an den Fehlerstream aus und beendet den Vorgang\n --version Gibt die Produktversion an den Outputstream aus und beendet den Vorgang\n -showversion Gibt die Produktversion an den Fehlerstream aus und setzt den Vorgang fort\n --show-version\n Gibt die Produktversion an den Outputstream aus und setzt den Vorgang fort\n --show-module-resolution\n Zeigt die Modulauflösungsausgabe beim Start an\n -? -h -help\n Gibt diese Hilfemeldung an den Fehlerstream aus\n --help Gibt diese Hilfemeldung an den Outputstream aus\n -X Gibt Hilfe zu zusätzlichen Optionen an den Fehlerstream aus\n --help-extra Gibt Hilfe zu zusätzlichen Optionen an den Outputstream aus\n -ea[:...|:]\n -enableassertions[:...|:]\n Aktiviert Assertions mit angegebener Granularität\n -da[:...|:]\n -disableassertions[:...|:]\n Deaktiviert Assertions mit angegebener Granularität\n -esa | -enablesystemassertions\n Aktiviert System-Assertions\n -dsa | -disablesystemassertions\n Deaktiviert System-Assertions\n -agentlib:[=]\n Lädt die native Agent Library . \ -Beispiel: -agentlib:jdwp\n siehe auch -agentlib:jdwp=help\n -agentpath:[=]\n Lädt die native Agent Library mit dem vollständigen Pfadnamen\n -javaagent:[=]\n Lädt den Java-Programmiersprachen-Agent, siehe java.lang.instrument\n -splash:\n Zeigt den Startbildschirm mit einem angegebenen Bild an\n Skalierte HiDPI-Bilder werden automatisch unterstützt und verwendet,\n falls verfügbar. Der nicht skalierte Bilddateiname (Beispiel: image.ext)\n muss immer als Argument an die Option "-splash" übergeben werden.\n Das am besten geeignete angegebene skalierte Bild wird\n automatisch ausgewählt.\n Weitere Informationen finden Sie in der Dokumentation zur SplashScreen-API\n @argument files\n Eine oder mehrere Argumentdateien mit Optionen\n --disable-@files\n Verhindert die weitere Erweiterung von Argumentdateien\n --enable-preview\n Lässt zu, das Klassen von Vorschaufeatures dieses Release abhängig sind\nUm ein Argument für eine lange Option anzugeben, können Sie --= oder\n-- verwenden.\n +java.launcher.opt.footer = \ -cp \n -classpath \n --class-path \n Eine durch {0} getrennte Liste mit Verzeichnissen, JAR-Archiven\n und ZIP-Archiven, in denen nach Klassendateien gesucht wird.\n -p \n --module-path ...\n Eine durch {0} getrennte Liste mit Elementen, von denen jedes Element ein Dateipfad\n zu einem Modul oder einem Verzeichnis mit Modulen ist. Jedes Modul ist entweder\n ein modulares JAR oder ein entpacktes Modulverzeichnis.\n --upgrade-module-path ...\n Eine durch {0} getrennte Liste mit Elementen, von denen jedes Element ein Dateipfad\n zu einem Modul oder einem Verzeichnis mit Modulen ist,\n um upgradefähige Module im Laufzeitimage zu ersetzen. Jedes Modul ist entweder\n ein modulares JAR oder ein entpacktes Modulverzeichnis.\n --add-modules [,...]\n Root-Module, die zusätzlich zum anfänglichen Modul aufgelöst werden sollen.\n kann auch wie folgt lauten: ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --enable-native-access [,...]\n Damit kann der Code in Modulen auf Code und Daten außerhalb der JRE zugreifen.\n kann auch ALL-UNNAMED sein, um den Code im Classpath anzugeben.\n --list-modules\n Listet beobachtbare Module auf und beendet den Vorgang\n -d \n --describe-module \n Beschreibt ein Modul und beendet den Vorgang\n --dry-run Erstellt eine VM und lädt die Hauptklasse, führt aber nicht die Hauptmethode aus.\n Die Option "--dry-run" kann nützlich sein, um die\n Befehlszeilenoptionen, wie die Modulsystemkonfiguration, zu validieren.\n --validate-modules\n Validiert alle Module und beendet den Vorgang\n Die Option "--validate-modules" kann nützlich sein, um\n Konflikte und andere Fehler mit Modulen auf dem Modulpfad zu ermitteln.\n -D=\n Legt eine Systemeigenschaft fest\n -verbose:[class|module|gc|jni]\n Aktiviert die Verbose-Ausgabe für das angegebene Subsystem\n -version Gibt die Produktversion an den Fehlerstream aus und beendet den Vorgang\n --version Gibt die Produktversion an den Outputstream aus und beendet den Vorgang\n -showversion Gibt die Produktversion an den Fehlerstream aus und setzt den Vorgang fort\n --show-version\n Gibt die Produktversion an den Outputstream aus und setzt den Vorgang fort\n --show-module-resolution\n Zeigt die Modulauflösungsausgabe beim Start an\n -? -h -help\n Gibt diese Hilfemeldung an den Fehlerstream aus\n --help Gibt diese Hilfemeldung an den Outputstream aus\n -X Gibt Hilfe zu zusätzlichen Optionen an den Fehlerstream aus\n --help-extra Gibt Hilfe zu zusätzlichen Optionen an den Outputstream aus\n -ea[:...|:]\n -enableassertions[:...|:]\n Aktiviert Assertions mit angegebener Granularität\n -da[:...|:]\n -disableassertions[:...|:]\n Deaktiviert Assertions mit angegebener Granularität\n -esa | -enablesystemassertions\n Aktiviert System-Assertions\n -dsa | -disablesystemassertions\n Deaktiviert System-Assertions\n -agentlib:[=]\n Lädt die \ +native Agent Library . Beispiel: -agentlib:jdwp\n siehe auch -agentlib:jdwp=help\n -agentpath:[=]\n Lädt die native Agent Library mit dem vollständigen Pfadnamen\n -javaagent:[=]\n Lädt den Java-Programmiersprachen-Agent, siehe java.lang.instrument\n -splash:\n Zeigt den Startbildschirm mit einem angegebenen Bild an\n Skalierte HiDPI-Bilder werden automatisch unterstützt und verwendet,\n falls verfügbar. Der nicht skalierte Bilddateiname (Beispiel: image.ext)\n muss immer als Argument an die Option "-splash" übergeben werden.\n Das am besten geeignete angegebene skalierte Bild wird\n automatisch ausgewählt.\n Weitere Informationen finden Sie in der Dokumentation zur SplashScreen-API\n @argument files\n Eine oder mehrere Argumentdateien mit Optionen\n --disable-@files\n Verhindert die weitere Erweiterung von Argumentdateien\n --enable-preview\n Lässt zu, das Klassen von Vorschaufeatures dieses Release abhängig sind\nUm ein Argument für eine lange Option anzugeben, können Sie --= oder\n-- verwenden.\n # Translators please note do not translate the options themselves -java.launcher.X.usage=\n -Xbatch Deaktiviert die Hintergrundkompilierung\n -Xbootclasspath/a:\n An das Ende des Bootstrap Classpaths anhängen\n -Xcheck:jni Führt zusätzliche Prüfungen für JNI-Funktionen aus\n -Xcomp Erzwingt die Kompilierung von Methoden beim ersten Aufruf\n -Xdebug Führt keine Aktion aus. Ist veraltet und wird in einem zukünftigen Release entfernt.\n -Xdiag Zeigt zusätzliche Diagnosemeldungen an\n -Xfuture Aktiviert strengste Prüfungen, als möglicher zukünftiger Standardwert erwartet.\n Diese Option ist veraltet und kann in einem\n zukünftigen Release entfernt werden.\n -Xint Nur Ausführung im interpretierten Modus\n -Xinternalversion\n Zeigt detailliertere JVM-Versionsinformationen an als die\n Option -version\n -Xlog: Konfiguriert oder aktiviert Logging mit dem einheitlichen Java Virtual\n Machine-(JVM-)Logging-Framework. Verwenden Sie -Xlog:help\n für weitere Einzelheiten.\n -Xloggc: Protokolliert den GC-Status in einer Datei mit Zeitstempeln.\n Diese Option ist veraltet und kann in einem\n zukünftigen Release entfernt werden. Wird durch -Xlog:gc: ersetzt.\n -Xmixed Ausführung im gemischten Modus (Standard)\n -Xmn Legt die anfängliche und maximale Größe (in Byte) des Heaps\n für die Young Generation (Nursery) fest\n -Xms Legt die anfängliche Java-Heap-Größe fest\n -Xmx Legt die maximale Java-Heap-Größe fest\n -Xnoclassgc Deaktiviert die Klassen-Garbage Collection\n -Xrs Reduziert die Verwendung von BS-Signalen durch Java/VM (siehe Dokumentation)\n -Xshare:auto Verwendet freigegebene Klassendaten, wenn möglich (Standard)\n -Xshare:off Versucht nicht, freigegebene Klassendaten zu verwenden\n -Xshare:on Erfordert die Verwendung freigegebener Klassendaten, verläuft sonst nicht erfolgreich.\n Diese Testoption kann zeitweise zu\n Fehlern führen. Sie darf nicht in Produktionsumgebungen verwendet werden.\n -XshowSettings Zeigt alle Einstellungen an und fährt fort\n -XshowSettings:all\n Zeigt alle Einstellungen an und fährt fort\n -XshowSettings:locale\n Zeigt alle gebietsschemabezogenen Einstellungen an und fährt fort\n -XshowSettings:properties\n Zeigt alle Eigenschaftseinstellungen an und fährt fort\n -XshowSettings:vm\n Zeigt alle VM-bezogenen Einstellungen an und fährt fort\n -XshowSettings:security\n Zeigt alle Sicherheitseinstellungen an und fährt fort\n -XshowSettings:security:all\n Zeigt alle Sicherheitseinstellungen an und fährt fort\n -XshowSettings:security:properties\n Zeigt Sicherheitseigenschaften an und fährt fort\n -XshowSettings:security:providers\n Zeigt statische Sicherheitsprovidereinstellungen an und fährt fort\n -XshowSettings:security:tls\n Zeigt TLS-bezogene Sicherheitseinstellungen an und fährt fort\n -XshowSettings:system\n (Nur Linux) Zeigt die Konfiguration des Hostsystems oder Containers an\n und fährt fort\n -Xss Legt die Stackgröße des Java-Threads fest\n Die tatsächliche Größe \ -kann auf ein Vielfaches der\n Systemseitengröße aufgerundet werden, wenn für das Betriebssystem erforderlich.\n -Xverify Legt den Modus der Bytecodeverifizierung fest\n Beachten Sie, dass die Option -Xverify:none veraltet ist und\n in einem zukünftigen Release entfernt werden kann.\n --add-reads =(,)*\n Aktualisiert , damit gelesen wird, ungeachtet\n der Moduldeklaration. \n kann ALL-UNNAMED sein, um alle unbenannten\n Module zu lesen.\n --add-exports /=(,)*\n Aktualisiert , um in zu exportieren,\n ungeachtet der Moduldeklaration.\n kann ALL-UNNAMED sein, um in alle\n unbenannten Module zu exportieren.\n --add-opens /=(,)*\n Aktualisiert , um in\n zu öffnen, ungeachtet der Moduldeklaration.\n --limit-modules [,...]\n Grenzt die Gesamtmenge der beobachtbaren Module ein\n --patch-module =({0})*\n Überschreibt oder erweitert ein Modul mit Klassen und Ressourcen\n in JAR-Dateien oder Verzeichnissen.\n --source \n Legt die Version der Quelle im Quelldateimodus fest.\n --finalization=\n Steuert, ob die JVM Objekte finalisiert.\n Dabei ist entweder "enabled" oder "disabled".\n Die Finalisierung ist standardmäßig aktiviert.\n\nDiese zusätzlichen Optionen können jederzeit ohne vorherige Ankündigung geändert werden.\n +java.launcher.X.usage=\n -Xbatch Deaktiviert die Hintergrundkompilierung\n -Xbootclasspath/a:\n An das Ende des Bootstrap Classpaths anhängen\n -Xcheck:jni Führt zusätzliche Prüfungen für JNI-Funktionen aus\n -Xcomp Erzwingt die Kompilierung von Methoden beim ersten Aufruf\n -Xdebug Führt keine Aktion aus. Ist veraltet und wird in einem zukünftigen Release entfernt.\n -Xdiag Zeigt zusätzliche Diagnosemeldungen an\n -Xfuture Aktiviert strengste Prüfungen, als möglicher zukünftiger Standardwert erwartet.\n Diese Option ist veraltet und kann in einem\n zukünftigen Release entfernt werden.\n -Xint Nur Ausführung im interpretierten Modus\n -Xinternalversion\n Zeigt detailliertere JVM-Versionsinformationen an als die\n Option -version\n -Xlog: Konfiguriert oder aktiviert Logging mit dem einheitlichen Java Virtual\n Machine-(JVM-)Logging-Framework. Verwenden Sie -Xlog:help\n für weitere Einzelheiten.\n -Xloggc: Protokolliert den GC-Status in einer Datei mit Zeitstempeln.\n Diese Option ist veraltet und kann in einem\n zukünftigen Release entfernt werden. Wird durch -Xlog:gc: ersetzt.\n -Xmixed Ausführung im gemischten Modus (Standard)\n -Xmn Legt die anfängliche und maximale Größe (in Byte) des Heaps\n für die Young Generation (Nursery) fest\n -Xms Legt die anfängliche Java-Heap-Größe fest\n -Xmx Legt die maximale Java-Heap-Größe fest\n -Xnoclassgc Deaktiviert die Klassen-Garbage Collection\n -Xrs Reduziert die Verwendung von BS-Signalen durch Java/VM (siehe Dokumentation)\n -Xshare:auto Verwendet freigegebene Klassendaten, wenn möglich (Standard)\n -Xshare:off Versucht nicht, freigegebene Klassendaten zu verwenden\n -Xshare:on Erfordert die Verwendung freigegebener Klassendaten, verläuft sonst nicht erfolgreich.\n Diese Testoption kann zeitweise zu\n Fehlern führen. Sie darf nicht in Produktionsumgebungen verwendet werden.\n -XshowSettings Zeigt alle Einstellungen an und fährt fort\n -XshowSettings:all\n Zeigt alle Einstellungen als Verbose-Ausgabe an und fährt fort\n -XshowSettings:locale\n Zeigt alle gebietsschemabezogenen Einstellungen an und fährt fort\n -XshowSettings:properties\n Zeigt alle Eigenschaftseinstellungen an und fährt fort\n -XshowSettings:vm\n Zeigt alle VM-bezogenen Einstellungen an und fährt fort\n -XshowSettings:security\n Zeigt alle Sicherheitseinstellungen an und fährt fort\n -XshowSettings:security:all\n Zeigt alle Sicherheitseinstellungen an und fährt fort\n -XshowSettings:security:properties\n Zeigt Sicherheitseigenschaften an und fährt fort\n -XshowSettings:security:providers\n Zeigt statische Sicherheitsprovidereinstellungen an und fährt fort\n -XshowSettings:security:tls\n Zeigt TLS-bezogene Sicherheitseinstellungen an und fährt fort\n -XshowSettings:system\n (Nur Linux) Zeigt die Konfiguration des Hostsystems oder Containers an\n und fährt fort\n -Xss Legt die Stackgröße des Java-Threads fest\n Die tatsächliche \ +Größe kann auf ein Vielfaches der\n Systemseitengröße aufgerundet werden, wenn für das Betriebssystem erforderlich.\n -Xverify Legt den Modus der Bytecodeverifizierung fest\n Beachten Sie, dass die Option -Xverify:none veraltet ist und\n in einem zukünftigen Release entfernt werden kann.\n --add-reads =(,)*\n Aktualisiert , damit gelesen wird, ungeachtet\n der Moduldeklaration. \n kann ALL-UNNAMED sein, um alle unbenannten\n Module zu lesen.\n --add-exports /=(,)*\n Aktualisiert , um in zu exportieren,\n ungeachtet der Moduldeklaration.\n kann ALL-UNNAMED sein, um in alle\n unbenannten Module zu exportieren.\n --add-opens /=(,)*\n Aktualisiert , um in\n zu öffnen, ungeachtet der Moduldeklaration.\n --limit-modules [,...]\n Grenzt die Gesamtmenge der beobachtbaren Module ein\n --patch-module =({0})*\n Überschreibt oder erweitert ein Modul mit Klassen und Ressourcen\n in JAR-Dateien oder Verzeichnissen.\n --source \n Legt die Version der Quelle im Quelldateimodus fest.\n --finalization=\n Steuert, ob die JVM Objekte finalisiert.\n Dabei ist entweder "enabled" oder "disabled".\n Die Finalisierung ist standardmäßig aktiviert.\n\nDiese zusätzlichen Optionen können jederzeit ohne vorherige Ankündigung geändert werden.\n # Translators please note do not translate the options themselves java.launcher.X.macosx.usage=\nDie folgenden Optionen sind für macOS spezifisch:\n -XstartOnFirstThread\n Führt die main()-Methode für den ersten (AppKit-)Thread aus\n -Xdock:name=\n Setzt den im Dock angezeigten Standardanwendungsnamen außer Kraft\n -Xdock:icon=\n Setzt das im Dock angezeigte Standardsymbol außer Kraft\n\n +java.launcher.bad.option=\nNicht erkannte showSettings-Option: {0}\nGültige Werte: "all", "locale", "properties", "security", "system"(nur Linux), "vm"\nGültige Werte für Unteroption "security": "all", "properties", "providers", "tls"\nSiehe "java -X"\n java.launcher.cls.error1=Fehler: Hauptklasse {0} konnte nicht gefunden oder geladen werden\nUrsache: {1}: {2} -java.launcher.cls.error2=Fehler: Hauptmethode ist nicht {0} in Klasse {1}. Definieren Sie die Hauptmethode als:\n public static void main(String[] args) -java.launcher.cls.error3=Fehler: Hauptmethode muss einen Wert vom Typ void in Klasse {0} zurückgeben. Definieren Sie \ndie Hauptmethode als:\n public static void main(String[] args) -java.launcher.cls.error4=Fehler: Hauptmethode in Klasse {0} nicht gefunden. Definieren Sie die Hauptmethode als:\n public static void main(String[] args):\noder eine JavaFX-Anwendung muss {1} erweitern -java.launcher.cls.error5=Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen -java.launcher.cls.error6=Fehler: Beim Laden der Klasse {0} ist ein LinkageError aufgetreten\n\t{1} -java.launcher.cls.error7=Fehler: Hauptklasse {0} kann nicht initialisiert werden\nUrsache: {1}: {2} -java.launcher.cls.error8=Fehler: Kein nicht privater Null-Argument-Konstruktor in Klasse {0} gefunden\nEntfernen Sie die Eigenschaft "private" aus dem vorhandenen Konstruktor, oder definieren Sie ihn als:\n public {0}() -java.launcher.cls.error9=Fehler: Konstruktor mit nicht statischer innerer Klasse {0} kann nicht aufgerufen werden \nLegen Sie die innere Klasse als statisch fest, oder verschieben Sie sie in eine separate Quelldatei +java.launcher.cls.error2=Fehler: Hauptmethode in Klasse {0} nicht gefunden. Definieren Sie die Hauptmethode als:\n public static void main(String[] args):\noder eine JavaFX-Anwendung muss {1} erweitern +java.launcher.cls.error3=Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen +java.launcher.cls.error4=Fehler: Beim Laden der Klasse {0} ist ein LinkageError aufgetreten\n\t{1} +java.launcher.cls.error5=Fehler: Hauptklasse {0} kann nicht initialisiert werden\nUrsache: {1}: {2} +java.launcher.cls.error6=Fehler: Kein nicht privater Null-Argument-Konstruktor in Klasse {0} gefunden\nEntfernen Sie die Eigenschaft "private" aus dem vorhandenen Konstruktor, oder definieren Sie ihn als:\n public {0}() +java.launcher.cls.error7=Fehler: Konstruktor mit nicht statischer innerer Klasse {0} kann nicht aufgerufen werden \nLegen Sie die innere Klasse als statisch fest, oder verschieben Sie sie in eine separate Quelldatei java.launcher.jar.error1=Fehler: Beim Versuch, Datei {0} zu öffnen, ist ein unerwarteter Fehler aufgetreten java.launcher.jar.error2=Manifest in {0} nicht gefunden java.launcher.jar.error3=kein Hauptmanifestattribut, in {0} java.launcher.jar.error4=Fehler beim Laden des Java-Agents in {0} +java.launcher.jar.error.illegal.ena.value=Fehler: Ungültiger Wert "{0}" für das Manifestattribut "Enable-Native-Access". Nur ''ALL-UNNAMED'' ist zulässig java.launcher.init.error=Initialisierungsfehler java.launcher.javafx.error1=Fehler: Die JavaFX-Methode launchApplication hat die falsche Signatur, sie\nmuss als statisch deklariert werden und einen Wert vom Typ VOID zurückgeben java.launcher.module.error1=Modul {0} weist kein ModuleMainClass-Attribut auf. Verwenden Sie -m / java.launcher.module.error2=Fehler: Hauptklasse {0} konnte in Modul {1} nicht gefunden oder geladen werden -java.launcher.module.error3=Fehler: Hauptklasse {0} kann nicht in Modul {1} geladen werden\n\t{2} +java.launcher.module.error3=Fehler: Hauptklasse {0} kann nicht in Modul {1} geladen werden\nUrsache: {2} java.launcher.module.error4={0} nicht gefunden java.launcher.module.error5=Fehler: Hauptklasse {0} kann nicht in Modul {1} initialisiert werden\nUrsache: {2}: {3} diff --git a/src/java.base/share/classes/sun/launcher/resources/launcher_ja.properties b/src/java.base/share/classes/sun/launcher/resources/launcher_ja.properties index 68b74449518..4455b2f8020 100644 --- a/src/java.base/share/classes/sun/launcher/resources/launcher_ja.properties +++ b/src/java.base/share/classes/sun/launcher/resources/launcher_ja.properties @@ -24,41 +24,41 @@ # # Translators please note do not translate the options themselves -java.launcher.opt.header = 使用方法: {0} [options] [args...]\n (クラスを実行する場合)\n または {0} [options] -jar [args...]\n (jarファイルを実行する場合)\n または {0} [options] -m [/] [args...]\n {0} [options] --module [/] [args...]\n (モジュールのメイン・クラスを実行する場合)\n または {0} [options] [args]\n (単一のソースファイル・プログラムを実行する場合)\n\n メイン・クラス、ソース・ファイル、-jar 、\n -mまたは--module /に続く引数は、メイン・クラスへの引数として\n 渡されます。\n\n オプションは次のとおりです:\n\n +java.launcher.opt.header = 使用方法: {0} [options] [args...]\n (クラスを実行する場合)\n または {0} [options] -jar [args...]\n (jarファイルを実行する場合)\n または {0} [options] -m [/] [args...]\n {0} [options] --module [/] [args...]\n (モジュールのメイン・クラスを実行する場合)\n または {0} [options] [args]\n (ソースファイル・プログラムを実行する場合)\n\n メイン・クラス、ソース・ファイル、-jar 、\n -mまたは--module /に続く引数は、メイン・クラスへの引数として\n 渡されます。\n\n オプションは次のとおりです:\n\n java.launcher.opt.vmselect =\ {0}\t "{1}" VMを選択する場合\n java.launcher.opt.hotspot =\ {0}\t は"{1}" VMのシノニムです [非推奨]\n # Translators please note do not translate the options themselves -java.launcher.opt.footer = \ -cp <ディレクトリおよびzip/jarファイルのクラス検索パス>\n -classpath <ディレクトリおよびzip/jarファイルのクラス検索パス>\n --class-path <ディレクトリおよびzip/jarファイルのクラス検索パス>\n {0}区切りリスト(ディレクトリ、JARアーカイブ、\n ZIPアーカイブ)で、クラス・ファイルの検索用。\n -p \n --module-path ...\n 要素を{0}で区切ったリストで、各要素は次へのファイル・パスです:\n モジュール、またはモジュールが格納されているディレクトリ。各モジュールは次のいずれかです:\n モジュラJARまたは展開形式のモジュール・ディレクトリ。\n --upgrade-module-path ...\n 要素を{0}で区切ったリストで、各要素は次へのファイル・パスです:\n モジュール、またはモジュールが格納されているディレクトリで、次のものを置き換えます:\n ランタイム・イメージのアップグレード可能なモジュール。各モジュールは次のいずれかです:\n モジュラJARまたは展開形式のモジュール・ディレクトリ。\n --add-modules [,...]\n 初期モジュールに加えて解決するルート・モジュール。\n には次も指定できます: ALL-DEFAULT、ALL-SYSTEM、\n ALL-MODULE-PATH.\n --enable-native-access [,...]\n 制限されたネイティブ操作の実行を許可されているモジュール。\n はALL-UNNAMEDにすることもできます。\n --list-modules\n 参照可能なモジュールをリストし終了します\n -d \n --describe-module \n モジュールを説明し終了します\n --dry-run VMを作成しメイン・クラスをロードしますが、メイン・メソッドは実行しません。\n --dry-runオプションは、次の検証に役立つ場合があります:\n \ -モジュール・システム構成などのコマンド行オプション。\n --validate-modules\n すべてのモジュールを検証し終了します\n --validate-modulesオプションは、次の検索に役立つ場合があります:\n モジュール・パス上のモジュールでの競合およびその他のエラー。\n -D=\n システム・プロパティを設定します\n -verbose:[class|module|gc|jni]\n 特定のサブシステムで詳細出力を有効にする\n -version 製品バージョンをエラー・ストリームに出力して終了します\n --version 製品バージョンを出力ストリームに出力して終了します\n -showversion 製品バージョンをエラー・ストリームに出力して続行します\n --show-version\n 製品バージョンを出力ストリームに出力して続行します\n --show-module-resolution\n 起動時にモジュール解決出力を表示します\n -? -h -help\n このヘルプ・メッセージをエラー・ストリームに出力します\n --help このヘルプ・メッセージを出力ストリームに出力します\n -X 追加オプションのヘルプをエラー・ストリームに出力します\n --help-extra 追加オプションのヘルプを出力ストリームに出力します\n -ea[:...|:]\n -enableassertions[:...|:]\n 指定した粒度でアサーションを有効にします\n -da[:...|:]\n -disableassertions[:...|:]\n 指定した粒度でアサーションを無効にします\n -esa | -enablesystemassertions\n システム・アサーションを有効にします\n -dsa | -disablesystemassertions\n システム・アサーションを無効にします\n -agentlib:[=]\n ネイティブ・エージェント・ライブラリをロードします。例: -agentlib:jdwp\n -agentlib:jdwp=helpも参照してください\n -agentpath:[=]\n \ +java.launcher.opt.footer = \ -cp <ディレクトリおよびzip/jarファイルのクラス検索パス>\n -classpath <ディレクトリおよびzip/jarファイルのクラス検索パス>\n --class-path <ディレクトリおよびzip/jarファイルのクラス検索パス>\n {0}区切りリスト(ディレクトリ、JARアーカイブ、\n ZIPアーカイブ)で、クラス・ファイルの検索用。\n -p \n --module-path ...\n 要素を{0}で区切ったリストで、各要素は次へのファイル・パスです:\n モジュール、またはモジュールが格納されているディレクトリ。各モジュールは次のいずれかです:\n モジュラJARまたは展開形式のモジュール・ディレクトリ。\n --upgrade-module-path ...\n 要素を{0}で区切ったリストで、各要素は次へのファイル・パスです:\n モジュール、またはモジュールが格納されているディレクトリで、次のものを置き換えます:\n ランタイム・イメージのアップグレード可能なモジュール。各モジュールは次のいずれかです:\n モジュラJARまたは展開形式のモジュール・ディレクトリ。\n --add-modules [,...]\n 初期モジュールに加えて解決するルート・モジュール。\n には次も指定できます: ALL-DEFAULT、ALL-SYSTEM、\n ALL-MODULE-PATH.\n --enable-native-access [,...]\n モジュール内のコードをJavaランタイムの外のコードおよびデータにアクセスさせることができます。\n は、クラス・パス上のコードを指定するためにALL-UNNAMEDにもできます。\n --list-modules\n 参照可能なモジュールをリストし終了します\n -d \n --describe-module \n モジュールを説明し終了します\n --dry-run VMを作成しメイン・クラスをロードしますが、メイン・メソッドは実行しません。\n \ +--dry-runオプションは、次の検証に役立つ場合があります:\n モジュール・システム構成などのコマンド行オプション。\n --validate-modules\n すべてのモジュールを検証し終了します\n --validate-modulesオプションは、次の検索に役立つ場合があります:\n モジュール・パス上のモジュールでの競合およびその他のエラー。\n -D=\n システム・プロパティを設定します\n -verbose:[class|module|gc|jni]\n 特定のサブシステムで詳細出力を有効にする\n -version 製品バージョンをエラー・ストリームに出力して終了します\n --version 製品バージョンを出力ストリームに出力して終了します\n -showversion 製品バージョンをエラー・ストリームに出力して続行します\n --show-version\n 製品バージョンを出力ストリームに出力して続行します\n --show-module-resolution\n 起動時にモジュール解決出力を表示します\n -? -h -help\n このヘルプ・メッセージをエラー・ストリームに出力します\n --help このヘルプ・メッセージを出力ストリームに出力します\n -X 追加オプションのヘルプをエラー・ストリームに出力します\n --help-extra 追加オプションのヘルプを出力ストリームに出力します\n -ea[:...|:]\n -enableassertions[:...|:]\n 指定した粒度でアサーションを有効にします\n -da[:...|:]\n -disableassertions[:...|:]\n 指定した粒度でアサーションを無効にします\n -esa | -enablesystemassertions\n システム・アサーションを有効にします\n -dsa | -disablesystemassertions\n システム・アサーションを無効にします\n -agentlib:[=]\n ネイティブ・エージェント・ライブラリをロードします。例: -agentlib:jdwp\n -agentlib:jdwp=helpも参照してください\n -agentpath:[=]\n \ フルパス名を使用して、ネイティブ・エージェント・ライブラリをロードします\n -javaagent:[=]\n Javaプログラミング言語エージェントをロードします。java.lang.instrumentを参照してください\n -splash:\n 指定されたイメージを含むスプラッシュ画面を表示します\n HiDPIスケールのイメージが自動的にサポートされて使用されます\n (可能な場合)。スケーリングされないイメージのファイル名(image.extなど)を\n 引数として-splashオプションに必ず渡す必要があります。\n 指定された最も適切なスケーリング済イメージが選択されます\n (自動的)。\n 詳細は、SplashScreen APIのドキュメントを参照してください\n @argumentファイル\n オプションを含む1つ以上の引数ファイル\n --disable-@files\n さらなる引数ファイル拡張を無効にします\n --enable-preview\n クラスをこのリリースのプレビュー機能に依存させることができます\n長いオプションの引数を指定する場合、--=または\n-- を使用できます。\n # Translators please note do not translate the options themselves java.launcher.X.usage=\n -Xbatch バックグラウンド・コンパイルを無効にします\n -Xbootclasspath/a:\n ブートストラップ・クラス・パスの最後に追加します\n -Xcheck:jni JNI関数に対する追加のチェックを実行します\n -Xcomp 初回呼出し時にメソッドのコンパイルを強制します\n -Xdebug 何も実行されません。将来のリリースで削除されるため、非推奨になりました。\n -Xdiag 追加の診断メッセージを表示します\n -Xfuture 将来のデフォルトを見越して、最も厳密なチェックを有効にします\n このオプションは非推奨であり、将来のリリースで削除される\n 可能性があります。\n -Xint インタプリタ・モードの実行のみ\n -Xinternalversion\n -versionオプションより詳細なJVMバージョン情報を\n 表示します\n -Xlog: Java Virtual Machine (JVM)統合ロギング・フレームワークでの\n ロギングを構成または有効化します。詳細は、-Xlog:helpを\n 使用してください。\n -Xloggc: タイムスタンプが付いたファイルにGCステータスのログを記録します\n このオプションは非推奨であり、将来のリリースで削除される\n 可能性があります。-Xlog:gc:で置換されています。\n -Xmixed 混合モードの実行(デフォルト)\n -Xmn 若い世代(ナーサリ)のヒープの初期サイズおよび最大サイズ\n (バイト単位)を設定します\n -Xms Javaの初期ヒープ・サイズを設定します\n -Xmx Javaの最大ヒープ・サイズを設定します\n -Xnoclassgc クラスのガベージ・コレクションを無効にします\n -Xrs Java/VMによるOSシグナルの使用を削減します(ドキュメントを参照)\n -Xshare:auto 可能であれば共有クラス・データを使用します(デフォルト)\n -Xshare:off \ -共有クラス・データの使用を試みません\n -Xshare:on 共有クラス・データの使用を必須にし、できなければ失敗します。\n これはテスト・オプションであり、断続的な失敗につながる\n 可能性があります。本番環境では使用しないでください。\n -XshowSettings すべての設定を表示して続行します\n -XshowSettings:all\n すべての設定を表示して続行します\n -XshowSettings:locale\n すべてのロケール関連の設定を表示して続行します\n -XshowSettings:properties\n すべてのプロパティ設定を表示して続行します\n -XshowSettings:vm\n すべてのVM関連の設定を表示して続行します\n -XshowSettings:security\n すべてのセキュリティ設定を表示して続行します\n -XshowSettings:security:all\n すべてのセキュリティ設定を表示して続行します\n -XshowSettings:security:properties\n セキュリティ・プロパティを表示して続行します\n -XshowSettings:security:providers\n 静的セキュリティ・プロバイダ設定を表示して続行します\n -XshowSettings:security:tls\n TLS関連のセキュリティ設定を表示して続行します\n -XshowSettings:system\n (Linuxのみ)ホスト・システムまたはコンテナを表示します\n 構成して続行します\n -Xss javaスレッドのスタック・サイズを設定します\n 実際のサイズは、次の倍数に切り上げられる場合があります: \n オペレーティング・システムの要件に応じたシステム・ページ・サイズ。\n -Xverify バイトコード・ベリファイアのモードを設定します\n オプション-Xverify:noneは非推奨になり、\n 将来のリリースで削除される可能性があります。\n --add-reads =(,)*\n モジュール宣言に関係なく、を更新してを\n 読み取ります。 \ -\n をALL-UNNAMEDに設定すると、すべての名前のないモジュールを\n 読み取ることができます。\n --add-exports /=(,)*\n モジュール宣言に関係なく、を更新してに\n エクスポートします。\n をALL-UNNAMEDに設定すると、すべての名前のないモジュールに\n エクスポートできます。\n --add-opens /=(,)*\n モジュール宣言に関係なく、を更新してを\n に開きます。\n --limit-modules [,...]\n 参照可能なモジュールの領域を制限します\n --patch-module =({0})*\n JARファイルまたはディレクトリのクラスおよびリソースで\n モジュールをオーバーライドまたは拡張します。\n --source \n ソースファイル・モードでソースのバージョンを設定します。\n --finalization=\n JVMがオブジェクトのファイナライズを実行するかどうかを制御します\n は"enabled"または"disabled"のいずれかです。\n ファイナライズはデフォルトで有効になっています。\n\nこの追加オプションは予告なしに変更されることがあります。\n +共有クラス・データの使用を試みません\n -Xshare:on 共有クラス・データの使用を必須にし、できなければ失敗します。\n これはテスト・オプションであり、断続的な失敗につながる\n 可能性があります。本番環境では使用しないでください。\n -XshowSettings すべての設定を表示して続行します\n -XshowSettings:all\n すべての設定を詳細に表示して続行します\n -XshowSettings:locale\n すべてのロケール関連の設定を表示して続行します\n -XshowSettings:properties\n すべてのプロパティ設定を表示して続行します\n -XshowSettings:vm\n すべてのVM関連の設定を表示して続行します\n -XshowSettings:security\n すべてのセキュリティ設定を表示して続行します\n -XshowSettings:security:all\n すべてのセキュリティ設定を表示して続行します\n -XshowSettings:security:properties\n セキュリティ・プロパティを表示して続行します\n -XshowSettings:security:providers\n 静的セキュリティ・プロバイダ設定を表示して続行します\n -XshowSettings:security:tls\n TLS関連のセキュリティ設定を表示して続行します\n -XshowSettings:system\n (Linuxのみ)ホスト・システムまたはコンテナを表示します\n 構成して続行します\n -Xss javaスレッドのスタック・サイズを設定します\n 実際のサイズは、次の倍数に切り上げられる場合があります: \n オペレーティング・システムの要件に応じたシステム・ページ・サイズ。\n -Xverify バイトコード・ベリファイアのモードを設定します\n オプション-Xverify:noneは非推奨になり、\n 将来のリリースで削除される可能性があります。\n --add-reads =(,)*\n モジュール宣言に関係なく、を更新してを\n \ +読み取ります。 \n をALL-UNNAMEDに設定すると、すべての名前のないモジュールを\n 読み取ることができます。\n --add-exports /=(,)*\n モジュール宣言に関係なく、を更新してに\n エクスポートします。\n をALL-UNNAMEDに設定すると、すべての名前のないモジュールに\n エクスポートできます。\n --add-opens /=(,)*\n モジュール宣言に関係なく、を更新してを\n に開きます。\n --limit-modules [,...]\n 参照可能なモジュールの領域を制限します\n --patch-module =({0})*\n JARファイルまたはディレクトリのクラスおよびリソースで\n モジュールをオーバーライドまたは拡張します。\n --source \n ソースファイル・モードでソースのバージョンを設定します。\n --finalization=\n JVMがオブジェクトのファイナライズを実行するかどうかを制御します\n は"enabled"または"disabled"のいずれかです。\n ファイナライズはデフォルトで有効になっています。\n\nこの追加オプションは予告なしに変更されることがあります。\n # Translators please note do not translate the options themselves java.launcher.X.macosx.usage=\n次のオプションはmacOS固有です:\n -XstartOnFirstThread\n main()メソッドを最初(AppKit)のスレッドで実行する\n -Xdock:name=\n Dockに表示されるデフォルト・アプリケーション名をオーバーライドする\n -Xdock:icon=\n Dockに表示されるデフォルト・アイコンをオーバーライドする\n\n +java.launcher.bad.option=\n認識されないshowSettingsオプション: {0}\n有効な値は"all"、"locale"、"properties"、"security"、"system"(Linuxのみ)、"vm"\n有効な"security"サブオプションの値は"all"、"properties"、"providers"、"tls"\n"java -X"を参照してください\n java.launcher.cls.error1=エラー: メイン・クラス{0}を検出およびロードできませんでした\n原因: {1}: {2} -java.launcher.cls.error2=エラー: メイン・メソッドがクラス{1}の{0}ではありません。次のようにメイン・メソッドを定義してください。\n public static void main(String[] args) -java.launcher.cls.error3=エラー: メイン・メソッドはクラス{0}のvoid型の値を返す必要があります。\n次のようにメイン・メソッドを定義してください。\n public static void main(String[] args) -java.launcher.cls.error4=エラー: メイン・メソッドがクラス{0}で見つかりません。次のようにメイン・メソッドを定義してください。\n public static void main(String[] args)\nまたはJavaFXアプリケーション・クラスは{1}を拡張する必要があります -java.launcher.cls.error5=エラー: JavaFXランタイム・コンポーネントが不足しており、このアプリケーションの実行に必要です -java.launcher.cls.error6=エラー: メイン・クラス{0}のロード中にLinkageErrorが発生しました\n\t{1} -java.launcher.cls.error7=エラー: メイン・クラス{0}を初期化できません\n原因: {1}: {2} -java.launcher.cls.error8=エラー: 非privateのゼロ引数コンストラクタがクラス{0}に見つかりません\n既存のコンストラクタからprivateを削除するか、次のように定義してください:\n public {0}() -java.launcher.cls.error9=エラー: staticでない内部クラス{0}コンストラクタを起動できません \n内部クラスをstaticにするか、内部クラスを外部に出してソース・ファイルを区別してください +java.launcher.cls.error2=エラー: メイン・メソッドがクラス{0}で見つかりません。次のようにメイン・メソッドを定義してください。\n public static void main(String[] args)\nまたはJavaFXアプリケーション・クラスは{1}を拡張する必要があります +java.launcher.cls.error3=エラー: JavaFXランタイム・コンポーネントが不足しており、このアプリケーションの実行に必要です +java.launcher.cls.error4=エラー: メイン・クラス{0}のロード中にLinkageErrorが発生しました\n\t{1} +java.launcher.cls.error5=エラー: メイン・クラス{0}を初期化できません\n原因: {1}: {2} +java.launcher.cls.error6=エラー: 非privateのゼロ引数コンストラクタがクラス{0}に見つかりません\n既存のコンストラクタからprivateを削除するか、次のように定義してください:\n public {0}() +java.launcher.cls.error7=エラー: staticでない内部クラス{0}コンストラクタを起動できません \n内部クラスをstaticにするか、内部クラスを外部に出してソース・ファイルを区別してください java.launcher.jar.error1=エラー: ファイル{0}を開こうとしているときに、予期しないエラーが発生しました java.launcher.jar.error2={0}にマニフェストが見つかりません java.launcher.jar.error3={0}にメイン・マニフェスト属性がありません java.launcher.jar.error4={0}内のJavaエージェントのロード中にエラーが発生しました +java.launcher.jar.error.illegal.ena.value=エラー: Enable-Native-Accessマニフェスト属性の値"{0}"が不正です。''ALL-UNNAMED''のみ許可されます java.launcher.init.error=初期化エラー java.launcher.javafx.error1=エラー: JavaFX launchApplicationメソッドに誤ったシグネチャがあり、\nstaticを宣言してvoid型の値を返す必要があります java.launcher.module.error1=モジュール{0}にModuleMainClass属性がありません。-m /を使用してください java.launcher.module.error2=エラー: モジュール{1}にメイン・クラス{0}が見つからなかったかロードできませんでした -java.launcher.module.error3=エラー: モジュール{1}のメイン・クラス{0}をロードできません\n\t{2} +java.launcher.module.error3=エラー: モジュール{1}のメイン・クラス{0}をロードできません\n原因: {2} java.launcher.module.error4={0}が見つかりません java.launcher.module.error5=エラー: モジュール{1}のメイン・クラス{0}を初期化できません\n原因: {2}: {3} diff --git a/src/java.base/share/classes/sun/launcher/resources/launcher_zh_CN.properties b/src/java.base/share/classes/sun/launcher/resources/launcher_zh_CN.properties index 02116bb6d3f..d497402042a 100644 --- a/src/java.base/share/classes/sun/launcher/resources/launcher_zh_CN.properties +++ b/src/java.base/share/classes/sun/launcher/resources/launcher_zh_CN.properties @@ -24,39 +24,39 @@ # # Translators please note do not translate the options themselves -java.launcher.opt.header = 用法:{0} [options] <主类> [args...]\n (执行类)\n 或 {0} [options] -jar [args...]\n (执行 jar 文件)\n 或 {0} [options] -m <模块>[/<主类>] [args...]\n {0} [options] --module <模块>[/<主类>] [args...]\n (执行模块中的主类)\n 或 {0} [options] <源文件> [args]\n (执行单个源文件程序)\n\n 将主类、源文件、-jar 、-m 或\n --module <模块>/<主类> 后的参数作为参数\n 传递到主类。\n\n 其中,选项包括:\n\n +java.launcher.opt.header = 用法:{0} [options] [args...]\n (执行类)\n 或 {0} [options] -jar [args...]\n (执行 jar 文件)\n 或 {0} [options] -m [/] [args...]\n {0} [options] --module [/] [args...]\n (执行模块中的主类)\n 或 {0} [options] [args]\n (执行源文件程序)\n\n 将主类、源文件、-jar 、-m 或\n --module / 后的参数作为参数\n 传递到主类。\n\n 其中,选项包括:\n\n java.launcher.opt.vmselect =\ {0}\t 选择 "{1}" VM\n java.launcher.opt.hotspot =\ {0}\t 是 "{1}" VM 的同义词 [已过时]\n # Translators please note do not translate the options themselves -java.launcher.opt.footer = \ -cp <目录和 zip/jar 文件的类搜索路径>\n -classpath <目录和 zip/jar 文件的类搜索路径>\n --class-path <目录和 zip/jar 文件的类搜索路径>\n 使用 {0} 分隔的, 用于搜索类文件的目录, JAR 档案\n 和 ZIP 档案列表。\n -p <模块路径>\n --module-path <模块路径>...\n {0} 分隔的元素列表,每个元素都是\n 模块或包含模块的目录的文件路径。每个模块都是\n 模块化 JAR 或展开的模块目录。\n --upgrade-module-path <模块路径>...\n {0} 分隔的元素列表,每个元素都是\n 模块或包含模块(用于替换运行时映像中的\n 可升级模块)的目录的文件路径。每个模块都是\n 模块化 JAR 或展开的模块目录。\n --add-modules <模块名称>[,<模块名称>...]\n 除了初始模块之外要解析的根模块。\n <模块名称> 还可以为 ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --enable-native-access [,...]\n 允许执行受限本机操作的模块。\n 还可以为 ALL-UNNAMED。\n --list-modules\n 列出可观察模块并退出\n -d \n --describe-module <模块名称>\n 描述模块并退出\n --dry-run 创建 VM 并加载主类, 但不执行 main 方法。\n 此 --dry-run 选项对于验证诸如\n 模块系统配置这样的命令行选项可能非常有用。\n --validate-modules\n 验证所有模块并退出\n --validate-modules 选项对于查找\n 模块路径中模块的冲突及其他错误可能非常有用。\n -D<名称>=<值>\n 设置系统属性\n -verbose:[class|module|gc|jni]\n 为给定子系统启用详细输出\n -version 将产品版本输出到错误流并退出\n --version 将产品版本输出到输出流并退出\n -showversion 将产品版本输出到错误流并继续\n --show-version\n 将产品版本输出到输出流并继续\n --show-module-resolution\n 在启动过程中显示模块解析输出\n -? -h -help\n 将此帮助消息输出到错误流\n --help 将此帮助消息输出到输出流\n -X \ -将额外选项的帮助输出到错误流\n --help-extra 将额外选项的帮助输出到输出流\n -ea[:<程序包名称>...|:<类名>]\n -enableassertions[:<程序包名称>...|:<类名>]\n 按指定的粒度启用断言\n -da[:<程序包名称>...|:<类名>]\n -disableassertions[:<程序包名称>...|:<类名>]\n 按指定的粒度禁用断言\n -esa | -enablesystemassertions\n 启用系统断言\n -dsa | -disablesystemassertions\n 禁用系统断言\n -agentlib:<库名>[=<选项>]\n 加载本机代理库 <库名>, 例如 -agentlib:jdwp\n 另请参阅 -agentlib:jdwp=help\n -agentpath:<路径名>[=<选项>]\n 按完整路径名加载本机代理库\n -javaagent:[=<选项>]\n 加载 Java 编程语言代理, 请参阅 java.lang.instrument\n -splash:<图像路径>\n 使用指定的图像显示启动屏幕\n 自动支持和使用 HiDPI 缩放图像\n (如果可用)。应始终将未缩放的图像文件名 (例如, image.ext)\n 作为参数传递给 -splash 选项。\n 将自动选取提供的最合适的缩放\n 图像。\n 有关详细信息, 请参阅 SplashScreen API 文档\n @argument 文件\n 一个或多个包含选项的参数文件\n --disable-@files\n 阻止进一步扩展参数文件\n --enable-preview\n 允许类依赖于此发行版的预览功能\n要为长选项指定参数, 可以使用 --<名称>=<值> 或\n--<名称> <值>。\n +java.launcher.opt.footer = \ -cp <目录和 zip/jar 文件的类搜索路径>\n -classpath <目录和 zip/jar 文件的类搜索路径>\n --class-path <目录和 zip/jar 文件的类搜索路径>\n 使用 {0} 分隔的, 用于搜索类文件的目录, JAR 档案\n 和 ZIP 档案列表。\n -p <模块路径>\n --module-path <模块路径>...\n {0} 分隔的元素列表,每个元素都是\n 模块或包含模块的目录的文件路径。每个模块都是\n 模块化 JAR 或展开的模块目录。\n --upgrade-module-path <模块路径>...\n {0} 分隔的元素列表,每个元素都是\n 模块或包含模块(用于替换运行时映像中的\n 可升级模块)的目录的文件路径。每个模块都是\n 模块化 JAR 或展开的模块目录。\n --add-modules <模块名称>[,<模块名称>...]\n 除了初始模块之外要解析的根模块。\n <模块名称> 还可以为 ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --enable-native-access [,...]\n 允许模块中的代码访问 Java 运行时之外的代码和数据。\n 也可以是 ALL-UNNAMED,以指示类路径上的代码。\n --list-modules\n 列出可观察模块并退出\n -d \n --describe-module <模块名称>\n 描述模块并退出\n --dry-run 创建 VM 并加载主类, 但不执行 main 方法。\n 此 --dry-run 选项对于验证诸如\n 模块系统配置这样的命令行选项可能非常有用。\n --validate-modules\n 验证所有模块并退出\n --validate-modules 选项对于查找\n 模块路径中模块的冲突及其他错误可能非常有用。\n -D<名称>=<值>\n 设置系统属性\n -verbose:[class|module|gc|jni]\n 为给定子系统启用详细输出\n -version 将产品版本输出到错误流并退出\n --version 将产品版本输出到输出流并退出\n -showversion 将产品版本输出到错误流并继续\n --show-version\n 将产品版本输出到输出流并继续\n --show-module-resolution\n 在启动过程中显示模块解析输出\n -? -h -help\n 将此帮助消息输出到错误流\n --help \ +将此帮助消息输出到输出流\n -X 将额外选项的帮助输出到错误流\n --help-extra 将额外选项的帮助输出到输出流\n -ea[:<程序包名称>...|:<类名>]\n -enableassertions[:<程序包名称>...|:<类名>]\n 按指定的粒度启用断言\n -da[:<程序包名称>...|:<类名>]\n -disableassertions[:<程序包名称>...|:<类名>]\n 按指定的粒度禁用断言\n -esa | -enablesystemassertions\n 启用系统断言\n -dsa | -disablesystemassertions\n 禁用系统断言\n -agentlib:<库名>[=<选项>]\n 加载本机代理库 <库名>, 例如 -agentlib:jdwp\n 另请参阅 -agentlib:jdwp=help\n -agentpath:<路径名>[=<选项>]\n 按完整路径名加载本机代理库\n -javaagent:[=<选项>]\n 加载 Java 编程语言代理, 请参阅 java.lang.instrument\n -splash:<图像路径>\n 使用指定的图像显示启动屏幕\n 自动支持和使用 HiDPI 缩放图像\n (如果可用)。应始终将未缩放的图像文件名 (例如, image.ext)\n 作为参数传递给 -splash 选项。\n 将自动选取提供的最合适的缩放\n 图像。\n 有关详细信息, 请参阅 SplashScreen API 文档\n @argument 文件\n 一个或多个包含选项的参数文件\n --disable-@files\n 阻止进一步扩展参数文件\n --enable-preview\n 允许类依赖于此发行版的预览功能\n要为长选项指定参数, 可以使用 --<名称>=<值> 或\n--<名称> <值>。\n # Translators please note do not translate the options themselves -java.launcher.X.usage=\n -Xbatch 禁用后台编译\n -Xbootclasspath/a:<以 {0} 分隔的目录和 zip/jar 文件>\n 附加在引导类路径末尾\n -Xcheck:jni 对 JNI 函数执行其他检查\n -Xcomp 强制在首次调用时编译方法\n -Xdebug 不执行任何操作;已过时,将在未来发行版中删除。\n -Xdiag 显示附加诊断消息\n -Xfuture 启用最严格的检查,预期将来的默认值。\n 此选项已过时,可能会在\n 未来发行版中删除。\n -Xint 仅解释模式执行\n -Xinternalversion\n 显示比 -version 选项更详细的\n JVM 版本信息\n -Xlog: 配置或启用采用 Java 虚拟\n 机 (Java Virtual Machine, JVM) 统一记录框架进行事件记录。使用 -Xlog:help\n 可了解详细信息。\n -Xloggc: 将 GC 状态记录在文件中(带时间戳)。\n 此选项已过时,可能会在\n 将来的发行版中删除。它将替换为 -Xlog:gc:。\n -Xmixed 混合模式执行(默认值)\n -Xmn 为年轻代(新生代)设置初始和最大堆大小\n (以字节为单位)\n -Xms 设置初始 Java 堆大小\n -Xmx 设置最大 Java 堆大小\n -Xnoclassgc 禁用类垃圾收集\n -Xrs 减少 Java/VM 对操作系统信号的使用(请参见文档)\n -Xshare:auto 在可能的情况下使用共享类数据(默认值)\n -Xshare:off 不尝试使用共享类数据\n -Xshare:on 要求使用共享类数据,否则将失败。\n 这是一个测试选项,可能导致间歇性\n 故障。不应在生产环境中使用它。\n -XshowSettings 显示所有设置并继续\n -XshowSettings:all\n 显示所有设置并继续\n -XshowSettings:locale\n 显示所有与区域设置相关的设置并继续\n -XshowSettings:properties\n 显示所有属性设置并继续\n -XshowSettings:vm\n 显示所有与 vm 相关的设置并继续\n -XshowSettings:security\n 显示所有安全设置并继续\n -XshowSettings:security:all\n 显示所有安全设置并继续\n -XshowSettings:security:properties\n \ -显示安全属性并继续\n -XshowSettings:security:providers\n 显示静态安全提供方设置并继续\n -XshowSettings:security:tls\n 显示与 TLS 相关的安全设置并继续\n -XshowSettings:system\n (仅 Linux)显示主机系统或容器\n 配置并继续\n -Xss 设置 Java 线程堆栈大小\n 实际大小可以舍入到\n 操作系统要求的系统页面大小的倍数。\n -Xverify 设置字节码验证器的模式\n 请注意,选项 -Xverify:none 已过时,\n 可能会在未来发行版中删除。\n --add-reads =(,)*\n 更新 以读取 ,而无论\n 模块如何声明。 \n 可以是 ALL-UNNAMED,将读取所有未命名\n 模块。\n --add-exports /=(,)*\n 更新 以将 导出到 ,\n 而无论模块如何声明。\n 可以是 ALL-UNNAMED,将导出到所有\n 未命名模块。\n --add-opens /=(,)*\n 更新 以在 中打开\n ,而无论模块如何声明。\n --limit-modules [,...]\n 限制可观察模块的领域\n --patch-module =({0})*\n 使用 JAR 文件或目录中的类和资源\n 覆盖或增强模块。\n --source \n 设置源文件模式中源的版本。\n --finalization=\n 控制 JVM 是否执行对象最终处理,\n 其中 为 "enabled" 或 "disabled" 之一。\n 默认情况下,最终处理处于启用状态。\n\n这些额外选项如有更改, 恕不另行通知。\n +java.launcher.X.usage=\n -Xbatch 禁用后台编译\n -Xbootclasspath/a:<以 {0} 分隔的目录和 zip/jar 文件>\n 附加在引导类路径末尾\n -Xcheck:jni 对 JNI 函数执行其他检查\n -Xcomp 强制在首次调用时编译方法\n -Xdebug 不执行任何操作;已过时,将在未来发行版中删除。\n -Xdiag 显示附加诊断消息\n -Xfuture 启用最严格的检查,预期将来的默认值。\n 此选项已过时,可能会在\n 未来发行版中删除。\n -Xint 仅解释模式执行\n -Xinternalversion\n 显示比 -version 选项更详细的\n JVM 版本信息\n -Xlog: 配置或启用采用 Java 虚拟\n 机 (Java Virtual Machine, JVM) 统一记录框架进行事件记录。使用 -Xlog:help\n 可了解详细信息。\n -Xloggc: 将 GC 状态记录在文件中(带时间戳)。\n 此选项已过时,可能会在\n 将来的发行版中删除。它将替换为 -Xlog:gc:。\n -Xmixed 混合模式执行(默认值)\n -Xmn 为年轻代(新生代)设置初始和最大堆大小\n (以字节为单位)\n -Xms 设置初始 Java 堆大小\n -Xmx 设置最大 Java 堆大小\n -Xnoclassgc 禁用类垃圾收集\n -Xrs 减少 Java/VM 对操作系统信号的使用(请参见文档)\n -Xshare:auto 在可能的情况下使用共享类数据(默认值)\n -Xshare:off 不尝试使用共享类数据\n -Xshare:on 要求使用共享类数据,否则将失败。\n 这是一个测试选项,可能导致间歇性\n 故障。不应在生产环境中使用它。\n -XshowSettings 显示所有设置并继续\n -XshowSettings:all\n 详细显示所有设置并继续\n -XshowSettings:locale\n 显示所有与区域设置相关的设置并继续\n -XshowSettings:properties\n 显示所有属性设置并继续\n -XshowSettings:vm\n 显示所有与 vm 相关的设置并继续\n -XshowSettings:security\n 显示所有安全设置并继续\n -XshowSettings:security:all\n 显示所有安全设置并继续\n -XshowSettings:security:properties\n \ + 显示安全属性并继续\n -XshowSettings:security:providers\n 显示静态安全提供方设置并继续\n -XshowSettings:security:tls\n 显示与 TLS 相关的安全设置并继续\n -XshowSettings:system\n (仅 Linux)显示主机系统或容器\n 配置并继续\n -Xss 设置 Java 线程堆栈大小\n 实际大小可以舍入到\n 操作系统要求的系统页面大小的倍数。\n -Xverify 设置字节码验证器的模式\n 请注意,选项 -Xverify:none 已过时,\n 可能会在未来发行版中删除。\n --add-reads =(,)*\n 更新 以读取 ,而无论\n 模块如何声明。 \n 可以是 ALL-UNNAMED,将读取所有未命名\n 模块。\n --add-exports /=(,)*\n 更新 以将 导出到 ,\n 而无论模块如何声明。\n 可以是 ALL-UNNAMED,将导出到所有\n 未命名模块。\n --add-opens /=(,)*\n 更新 以在 中打开\n ,而无论模块如何声明。\n --limit-modules [,...]\n 限制可观察模块的领域\n --patch-module =({0})*\n 使用 JAR 文件或目录中的类和资源\n 覆盖或增强模块。\n --source \n 设置源文件模式中源的版本。\n --finalization=\n 控制 JVM 是否执行对象最终处理,\n 其中 为 "enabled" 或 "disabled" 之一。\n 默认情况下,最终处理处于启用状态。\n\n这些额外选项如有更改, 恕不另行通知。\n # Translators please note do not translate the options themselves java.launcher.X.macosx.usage=\n以下选项是特定于 macOS 的选项:\n -XstartOnFirstThread\n 在第一个 (AppKit) 线程上运行 main() 方法\n -Xdock:name=\n 覆盖停靠栏中显示的默认应用程序名称\n -Xdock:icon=\n 覆盖停靠栏中显示的默认图标\n\n +java.launcher.bad.option=\n无法识别的 showSettings 选项:{0}\n有效值为 "all"、"locale"、"properties"、"security"、"system"(仅 Linux)、"vm"\n有效的 "security" 子选项值为 "all"、"properties"、"providers"、"tls"\n请参见 "java -X"\n java.launcher.cls.error1=错误: 找不到或无法加载主类 {0}\n原因: {1}: {2} -java.launcher.cls.error2=错误: main 方法不是类 {1} 中的{0}, 请将 main 方法定义为:\n public static void main(String[] args) -java.launcher.cls.error3=错误: main 方法必须返回类 {0} 中的空类型值, 请\n将 main 方法定义为:\n public static void main(String[] args) -java.launcher.cls.error4=错误: 在类 {0} 中找不到 main 方法, 请将 main 方法定义为:\n public static void main(String[] args)\n否则 JavaFX 应用程序类必须扩展{1} -java.launcher.cls.error5=错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序 -java.launcher.cls.error6=错误: 加载主类 {0} 时出现 LinkageError\n\t{1} -java.launcher.cls.error7=错误: 无法初始化主类 {0}\n原因: {1}: {2} -java.launcher.cls.error8=错误:在类 {0} 中未找到非 private 零参数构造器\n请从现有构造器中删除 private,或者定义为:\n public {0}() -java.launcher.cls.error9=错误:无法调用非静态内部类 {0} 构造器\n请将内部类设为静态或将内部类移出到单独的源文件 +java.launcher.cls.error2=错误: 在类 {0} 中找不到 main 方法, 请将 main 方法定义为:\n public static void main(String[] args)\n否则 JavaFX 应用程序类必须扩展{1} +java.launcher.cls.error3=错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序 +java.launcher.cls.error4=错误: 加载主类 {0} 时出现 LinkageError\n\t{1} +java.launcher.cls.error5=错误: 无法初始化主类 {0}\n原因: {1}: {2} +java.launcher.cls.error6=错误:在类 {0} 中未找到非专用零参数构造器\n请从现有构造器中删除专用,或者定义为:\n public {0}() +java.launcher.cls.error7=错误:无法调用非静态内部类 {0} 构造器\n请将内部类设为静态或将内部类移出到单独的源文件 java.launcher.jar.error1=错误: 尝试打开文件{0}时出现意外错误 java.launcher.jar.error2=在{0}中找不到清单 java.launcher.jar.error3={0}中没有主清单属性 java.launcher.jar.error4=在 {0} 中加载 Java 代理时出错 +java.launcher.jar.error.illegal.ena.value=错误:Enable-Native-Access 清单属性的值 "{0}" 非法。仅允许使用 ''ALL-UNNAMED'' java.launcher.init.error=初始化错误 java.launcher.javafx.error1=错误: JavaFX launchApplication 方法具有错误的签名, 必须\n将方法声明为静态方法并返回空类型的值 java.launcher.module.error1=模块 {0} 不具有 ModuleMainClass 属性,请使用 -m <模块>/<主类> java.launcher.module.error2=错误: 在模块 {1} 中找不到或无法加载主类 {0} -java.launcher.module.error3=错误: 无法将主类 {0} 加载到模块 {1} 中\n\t{2} +java.launcher.module.error3=错误:无法加载模块 {1} 中的主类 {0}\n原因:{2} java.launcher.module.error4=找不到{0} java.launcher.module.error5=错误: 无法初始化模块 {1} 中的主类 {0}\n原因: {2}: {3} diff --git a/src/java.base/share/man/java.1 b/src/java.base/share/man/java.1 index ece26077424..857d6e2ed67 100644 --- a/src/java.base/share/man/java.1 +++ b/src/java.base/share/man/java.1 @@ -1579,6 +1579,15 @@ Specifies the path and name of the class data sharing (CDS) archive file See \f[B]Application Class Data Sharing\f[R]. .RE .TP +\f[V]-XX:+VerifySharedSpaces\f[R] +If this option is specified, the JVM will load a CDS archive file only +if it passes an integrity check based on CRC32 checksums. +The purpose of this flag is to check for unintentional damage to CDS +archive files in transmission or storage. +To guarantee the security and proper operation of CDS, the user must +ensure that the CDS archive files used by Java applications cannot be +modified without proper authorization. +.TP \f[V]-XX:SharedArchiveConfigFile=\f[R]\f[I]shared_config_file\f[R] Specifies additional shared data added to the archive file. .TP diff --git a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties index c66d659a350..7407d4da3e0 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties +++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties @@ -1,4 +1,7 @@ # +# Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. +# +# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. @@ -323,3 +326,7 @@ # Catalog 09 # Technical term, do not translate: catalog CatalogException=JAXP00090001: CatalogResolver ist mit dem Katalog "{0}" aktiviert, eine CatalogException wird jedoch zurückgegeben. + +# Implementation Property DTD + JDK_DTD_DENY = JAXP00010008: DOCTYPE ist nicht zulässig, wenn die DTD-Eigenschaft auf Ablehnen gesetzt wurde. Weitere Informationen: Eigenschaft jdk.xml.dtd.support in java.xml/module-summary. + diff --git a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties index 23926b1884b..7204dfddd3e 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties +++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties @@ -1,4 +1,7 @@ # +# Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. +# +# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. @@ -323,3 +326,7 @@ # Catalog 09 # Technical term, do not translate: catalog CatalogException=JAXP00090001: CatalogResolverはカタログ"{0}"で有効ですが、CatalogExceptionが返されます。 + +# Implementation Property DTD + JDK_DTD_DENY = JAXP00010008: DTDプロパティが拒否に設定されている場合、DOCTYPEは指定できません。参照: java.xml/module-summaryのプロパティjdk.xml.dtd.support。 + diff --git a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties index 8df40728646..de68714fa2e 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties +++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties @@ -1,4 +1,7 @@ # +# Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. +# +# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. @@ -323,3 +326,7 @@ # Catalog 09 # Technical term, do not translate: catalog CatalogException=JAXP00090001: 已对目录 "{0}" 启用 CatalogResolver, 但返回了 CatalogException。 + +# Implementation Property DTD + JDK_DTD_DENY = JAXP00010008:当 DTD 属性设置为拒绝时,不允许使用 DOCTYPE。请参阅:java.xml/module-summary 中的属性 jdk.xml.dtd.support。 + diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_de.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_de.properties index e0e14c6caf7..566eff4c0d5 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_de.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_de.properties @@ -186,8 +186,13 @@ compiler.err.switch.expression.empty=Switch-Ausdruck enthält keine CASE-Klausel compiler.err.switch.expression.no.result.expressions=Switch-Ausdruck enthält keine Ergebnisausdrücke -# 0: name -compiler.err.call.must.be.first.stmt.in.ctor=Aufruf von {0} muss die erste Anweisung im Konstruktor sein +compiler.err.call.must.only.appear.in.ctor=Expliziter Konstruktoraufruf ist nur in einem Konstruktorbody zulässig + +compiler.err.redundant.superclass.init=Redundanter expliziter Konstruktoraufruf + +compiler.err.ctor.calls.not.allowed.here=Expliziter Konstruktoraufruf ist hier nicht zulässig + +compiler.err.return.before.superclass.initialized=''return'' ist vor einem expliziten Konstruktoraufruf nicht zulässig # 0: symbol kind, 1: name, 2: symbol kind, 3: type, 4: message segment compiler.err.cant.apply.symbol.noargs={0} {1} in {2} {3} kann nicht auf die angegebenen Typen angewendet werden.\nGrund: {4} @@ -286,7 +291,7 @@ compiler.err.annotation.decl.not.allowed.here=Annotationsschnittstellendeklarati # 0: symbol compiler.err.cant.inherit.from.final=Erben aus finalem {0}-Element nicht möglich -# 0: symbol or string +# 0: symbol or name compiler.err.cant.ref.before.ctor.called={0} kann nicht referenziert werden, bevor der Supertypkonstruktor aufgerufen wurde compiler.err.cant.select.static.class.from.param.type=Statische Klasse kann nicht aus einem parametrisierten Typ ausgewählt werden @@ -381,9 +386,9 @@ compiler.err.duplicate.class=Doppelte Klasse: {0} # 0: string compiler.err.bad.file.name=Ungültiger Dateiname: {0} -compiler.err.unnamed.class.should.not.have.package.declaration=Unbenannte Klasse darf keine Packagedeklaration aufweisen +compiler.err.implicit.class.should.not.have.package.declaration=Implizit deklarierte Klasse darf keine Packagedeklaration aufweisen -compiler.err.unnamed.class.does.not.have.main.method=Unbenannte Klasse weist keine Hauptmethode im Format "void main()" oder "void main(String[] args)" auf +compiler.err.implicit.class.does.not.have.main.method=Implizit deklarierte Klasse weist keine Hauptmethode im Format "void main()" oder "void main(String[] args)" auf # 0: name, 1: name compiler.err.same.binary.name=Klassen {0} und {1} haben denselben binären Namen @@ -408,6 +413,9 @@ compiler.err.cannot.assign.not.declared.guard=Zuweisen zu {0} nicht möglich, da # 0: type, 1: type compiler.err.constant.label.not.compatible=Konstantes Label des Typs {0} ist nicht mit Switch-Selektortyp {1} kompatibel +# 0: type +compiler.err.selector.type.not.allowed=Selektortyp {0} ist nicht zulässig + compiler.err.flows.through.to.pattern=Ungültiger Fallthrough zu einem Muster compiler.err.flows.through.from.pattern=Ungültiger Fallthrough von einem Muster @@ -959,9 +967,6 @@ compiler.err.text.block.template.is.not.well.formed=Textblockvorlage ist nicht w compiler.err.processor.missing.from.string.template.expression=Prozessor fehlt in Zeichenfolgenvorlagen-Ausdruck -# 0: symbol -compiler.err.processor.type.cannot.be.a.raw.type=Prozessortyp kann kein Raw-Typ sein: {0} - # 0: symbol compiler.err.not.a.processor.type=Kein Prozessortyp: {0} @@ -1368,6 +1373,9 @@ compiler.err.is.preview={0} ist eine Vorschau-API, die standardmäßig deaktivie # 0: symbol compiler.warn.is.preview.reflective={0} ist eine reflektive Vorschau-API, die in einem zukünftigen Release entfernt werden kann. +# 0: symbol, 1: symbol +compiler.warn.restricted.method={0}.{1} ist eine eingeschränkte Methode.\n(Eingeschränkte Methoden sind nicht sicher und können bei falscher Verwendung die JRE zum Absturz bringen oder den Arbeitsspeicher beschädigen) + # 0: symbol compiler.warn.has.been.deprecated.module=Modul {0} ist veraltet @@ -1504,11 +1512,23 @@ compiler.warn.static.not.qualified.by.type=Statische {0} muss mit Typname {1} an # 0: kind name compiler.warn.static.not.qualified.by.type2={0} (statisch) darf nicht als Member einer anonymen Klasse verwendet werden +# 0: string, 1: fragment +compiler.warn.source.no.bootclasspath=Bootstrap Classpath ist nicht zusammen mit -source {0} festgelegt\n{1} + +# 0: string, 1: fragment +compiler.warn.source.no.system.modules.path=Systemmodulpfad ist nicht zusammen mit -source {0} festgelegt\n{1} + # 0: string -compiler.warn.source.no.bootclasspath=Bootstrap Classpath nicht zusammen mit -source {0} festgelegt +compiler.misc.source.no.bootclasspath=Wenn Sie den Bootstrap Classpath nicht festlegen, kann dies zu Klassendateien führen, die auf JDK {0} nicht ausgeführt werden können\n--release {0} wird anstelle von -source {0} empfohlen, weil dadurch der Bootstrap Classpath automatisch festgelegt wird # 0: string -compiler.warn.source.no.system.modules.path=Systemmodulpfad nicht zusammen mit -source {0} festgelegt +compiler.misc.source.no.system.modules.path=Wenn Sie den Speicherort der Systemmodule nicht festlegen, kann dies zu Klassendateien führen, die auf JDK {0} nicht ausgeführt werden können\n--release {0} wird anstelle von -source {0} empfohlen, weil dadurch der Speicherort der Systemmodule automatisch festgelegt wird + +# 0: string, 1: string +compiler.misc.source.no.bootclasspath.with.target=Wenn Sie den Bootstrap Classpath nicht festlegen, kann dies zu Klassendateien führen, die auf JDK 8 nicht ausgeführt werden können\n--release {0} wird anstelle von -source {0} -target {1} empfohlen, weil dadurch der Bootstrap Classpath automatisch festgelegt wird + +# 0: string, 1: string +compiler.misc.source.no.system.modules.path.with.target=Wenn Sie den Speicherort der Systemmodule nicht festlegen, kann dies zu Klassendateien führen, die auf JDK {0} nicht ausgeführt werden können\n--release {0} wird anstelle von -source {0} -target {1} empfohlen, weil dadurch der Speicherort der Systemmodule automatisch festgelegt wird # 0: string compiler.warn.option.obsolete.source=Quellwert {0} ist veraltet und wird in einem zukünftigen Release entfernt @@ -2262,13 +2282,17 @@ compiler.misc.feature.string.templates=Zeichenfolgenvorlagen compiler.misc.feature.unconditional.patterns.in.instanceof=Nicht bedingte Muster in instanceof -compiler.misc.feature.unnamed.classes=Unbenannte Klassen +compiler.misc.feature.implicit.classes=Implizit deklarierte Klassen + +compiler.misc.feature.super.init=Anweisungen vor super() compiler.warn.underscore.as.identifier=Ab Release 9 ist "_" ein Schlüsselwort und kann nicht als ID verwendet werden compiler.err.underscore.as.identifier=Ab Release 9 ist "_" ein Schlüsselwort und kann nicht als ID verwendet werden -compiler.err.use.of.underscore.not.allowed=Ab Release 21 ist nur das Unterstrichschlüsselwort "_" zulässig, um\nunbenannte Muster, lokale Variablen, Ausnahmeparameter oder Lambda-Parameter zu deklarieren +compiler.err.use.of.underscore.not.allowed=Unterstrich ist hier nicht zulässig\nAb Release 9 ist ''_'' ein Schlüsselwort und kann nicht als ID verwendet werden\nAb Release 22 kann ''_'' als Name in der Deklaration unbenannter Muster, lokaler Variablen, Ausnahmeparameter oder Lambda-Parameter verwendet werden + +compiler.err.use.of.underscore.not.allowed.non.variable=Unterstrich ist hier nicht zulässig compiler.err.use.of.underscore.not.allowed.with.brackets=Auf das Unterstrichschlüsselwort "_" dürfen keine Klammern folgen @@ -2756,7 +2780,7 @@ compiler.err.record.cannot.declare.instance.fields=Felddeklaration muss statisch compiler.err.invalid.supertype.record=Klassen können {0} nicht direkt erweitern # 0: symbol -compiler.err.first.statement.must.be.call.to.another.constructor=Konstruktor ist nicht kanonisch. Daher muss die erste Anweisung einen anderen Konstruktor der Klasse {0} aufrufen +compiler.err.non.canonical.constructor.invoke.another.constructor=Konstruktor ist nicht kanonisch. Daher muss ein anderer Konstruktor der Klasse {0} aufgerufen werden compiler.err.instance.initializer.not.allowed.in.records=Instanz-Initializer in Datensätzen nicht zulässig @@ -2804,11 +2828,11 @@ compiler.err.error.writing.file=Fehler beim Schreiben von {0}. {1} compiler.err.sourcepath.modulesourcepath.conflict=--source-path und --module-source-path können nicht beide angegeben werden -# 0: string, 1: target -compiler.warn.source.target.conflict=Quellrelease {0} erfordert Zielrelease {1} +# 0: string, 1: string +compiler.err.source.target.conflict=Angegebenes Zielrelease {1} ist zu alt für das angegebene Quellrelease {0}\n--release {1} wird beim Kompilieren von Code, der auf JDK {1} ausgeführt werden soll, empfohlen -# 0: string, 1: target -compiler.warn.target.default.source.conflict=Zielrelease {0} steht mit Standardquellrelease {1} in Konflikt +# 0: string, 1: string +compiler.err.target.default.source.conflict=Angegebenes Zielrelease {1} ist zu alt für das standardmäßige Quellrelease {0}\n--release {1} wird beim Kompilieren von Code, der auf JDK {1} ausgeführt werden soll, empfohlen # 0: profile, 1: target compiler.warn.profile.target.conflict=Profil {0} ist für Zielrelease {1} nicht gültig diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties index f3b15c3527a..01844578905 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties @@ -186,8 +186,13 @@ compiler.err.switch.expression.empty=switch式にcase句がありません compiler.err.switch.expression.no.result.expressions=switch式に結果式がありません -# 0: name -compiler.err.call.must.be.first.stmt.in.ctor={0}の呼出しはコンストラクタの先頭文である必要があります +compiler.err.call.must.only.appear.in.ctor=明示的なコンストラクタ呼出しは、コンストラクタ本体にのみ表示されます + +compiler.err.redundant.superclass.init=冗長な明示的なコンストラクタ呼出し + +compiler.err.ctor.calls.not.allowed.here=明示的なコンストラクタ呼出しはここでは許可されません + +compiler.err.return.before.superclass.initialized=明示的なコンストラクタ呼出しの前に''return''は許可されません # 0: symbol kind, 1: name, 2: symbol kind, 3: type, 4: message segment compiler.err.cant.apply.symbol.noargs={2} {3}の{0} {1}は指定された型に適用できません。\n理由: {4} @@ -286,7 +291,7 @@ compiler.err.annotation.decl.not.allowed.here=ここでは注釈インタフェ # 0: symbol compiler.err.cant.inherit.from.final=final {0}からは継承できません -# 0: symbol or string +# 0: symbol or name compiler.err.cant.ref.before.ctor.called=スーパータイプのコンストラクタの呼出し前は{0}を参照できません compiler.err.cant.select.static.class.from.param.type=パラメータにされた型からstaticクラスを選択することはできません @@ -381,9 +386,9 @@ compiler.err.duplicate.class=クラス{0}が重複しています # 0: string compiler.err.bad.file.name=不正なファイル名: {0} -compiler.err.unnamed.class.should.not.have.package.declaration=無名クラスにパッケージ宣言を含めることはできません +compiler.err.implicit.class.should.not.have.package.declaration=暗黙的に宣言されたクラスにパッケージ宣言を含めることはできません -compiler.err.unnamed.class.does.not.have.main.method=無名クラスにvoid main()またはvoid main(String[] args)という形式のmainメソッドがありません +compiler.err.implicit.class.does.not.have.main.method=暗黙的に宣言されたクラスにvoid main()またはvoid main(String[] args)という形式のmainメソッドがありません # 0: name, 1: name compiler.err.same.binary.name=クラス: {0}と{1}のバイナリ名が同じです @@ -408,6 +413,9 @@ compiler.err.cannot.assign.not.declared.guard=ガード内で宣言されてい # 0: type, 1: type compiler.err.constant.label.not.compatible=タイプ{0}の定数ラベルがswitchセレクタ・タイプ{1}と互換性がありません +# 0: type +compiler.err.selector.type.not.allowed=セレクタ・タイプ{0}は許可されません + compiler.err.flows.through.to.pattern=パターンに対して不正なfall-through compiler.err.flows.through.from.pattern=パターンからの不正なfall-through @@ -959,9 +967,6 @@ compiler.err.text.block.template.is.not.well.formed=テキスト・ブロック compiler.err.processor.missing.from.string.template.expression=プロセッサが文字列テンプレート式にありません -# 0: symbol -compiler.err.processor.type.cannot.be.a.raw.type=プロセッサ・タイプはraw型にできません: {0} - # 0: symbol compiler.err.not.a.processor.type=プロセッサ・タイプではありません: {0} @@ -1368,6 +1373,9 @@ compiler.err.is.preview={0}はプレビューAPIであり、デフォルトで # 0: symbol compiler.warn.is.preview.reflective={0}はリフレクティブ・プレビューAPIであり、今後のリリースで削除される可能性があります。 +# 0: symbol, 1: symbol +compiler.warn.restricted.method={0}.{1}は制限されたメソッドです。\n(制限されたメソッドは安全ではありません。不適切に使用した場合、Javaランタイムがクラッシュまたはメモリーが破損する場合があります) + # 0: symbol compiler.warn.has.been.deprecated.module=モジュール{0}は推奨されません @@ -1504,11 +1512,23 @@ compiler.warn.static.not.qualified.by.type=static {0}は式ではなく型名{1} # 0: kind name compiler.warn.static.not.qualified.by.type2=static {0}を匿名クラスのメンバーとして使用しないでください +# 0: string, 1: fragment +compiler.warn.source.no.bootclasspath=ブートストラップ・クラス・パスが-source {0}と一緒に設定されていません\n{1} + +# 0: string, 1: fragment +compiler.warn.source.no.system.modules.path=システム・モジュールの場所が-source {0}と一緒に設定されていません\n{1} + # 0: string -compiler.warn.source.no.bootclasspath=ブートストラップ・クラスパスが-source {0}と一緒に設定されていません +compiler.misc.source.no.bootclasspath=ブートストラップ・クラス・パスを設定しないと、クラス・ファイルがJDK {0}で実行できない場合があります\nブートストラップ・クラス・パスを自動的に設定するため、-source {0}のかわりに--release {0}をお薦めします # 0: string -compiler.warn.source.no.system.modules.path=システム・モジュール・パスが-source {0}と一緒に設定されていません +compiler.misc.source.no.system.modules.path=システム・モジュールの場所を設定しないと、クラス・ファイルがJDK {0}で実行できない場合があります\nシステム・モジュールの場所を自動的に設定するため、-source {0}のかわりに--release {0}をお薦めします + +# 0: string, 1: string +compiler.misc.source.no.bootclasspath.with.target=ブートストラップ・クラス・パスを設定しないと、クラス・ファイルがJDK 8で実行できない場合があります\nブートストラップ・クラス・パスを自動的に設定するため、-source {0} -target {1}のかわりに--release {0}をお薦めします + +# 0: string, 1: string +compiler.misc.source.no.system.modules.path.with.target=システム・モジュールの場所を設定しないと、クラス・ファイルがJDK {0}で実行できない場合があります\nシステム・モジュールの場所を自動的に設定するため、-source {0} -target {1}のかわりに--release {0}をお薦めします # 0: string compiler.warn.option.obsolete.source=ソース値{0}は廃止されていて、今後のリリースで削除される予定です @@ -2262,13 +2282,17 @@ compiler.misc.feature.string.templates=文字列テンプレート compiler.misc.feature.unconditional.patterns.in.instanceof=instanceofでの無条件パターン -compiler.misc.feature.unnamed.classes=無名クラス +compiler.misc.feature.implicit.classes=暗黙的に宣言されたクラス + +compiler.misc.feature.super.init=super()の前の文 compiler.warn.underscore.as.identifier=リリース9から''_''はキーワードなので識別子として使用することはできません compiler.err.underscore.as.identifier=リリース9から''_''はキーワードなので識別子として使用することはできません -compiler.err.use.of.underscore.not.allowed=リリース21から、アンダースコア・キーワード''_''は、\n無名パターン、ローカル変数、例外パラメータまたはラムダ・パラメータを宣言する場合にのみ許可されます +compiler.err.use.of.underscore.not.allowed=アンダースコアはここでは許可されません\nリリース9から、''_''はキーワードなので識別子として使用することはできません\nリリース22から、無名パターン、ローカル変数、例外パラメータまたはラムダ・パラメータの宣言には''_''を名前として使用できます + +compiler.err.use.of.underscore.not.allowed.non.variable=アンダースコアはここでは許可されません compiler.err.use.of.underscore.not.allowed.with.brackets=アンダースコア・キーワード''_''に大カッコを続けることはできません @@ -2756,7 +2780,7 @@ compiler.err.record.cannot.declare.instance.fields=フィールド宣言は静 compiler.err.invalid.supertype.record=クラスは直接{0}を拡張できません # 0: symbol -compiler.err.first.statement.must.be.call.to.another.constructor=コンストラクタが標準でないため、先頭文がクラス{0}の他のコンストラクタを呼び出す必要があります +compiler.err.non.canonical.constructor.invoke.another.constructor=コンストラクタが標準でないため、クラス{0}の他のコンストラクタを呼び出す必要があります compiler.err.instance.initializer.not.allowed.in.records=インスタンス・イニシャライザはレコードでは使用できません @@ -2804,11 +2828,11 @@ compiler.err.error.writing.file={0}の書込みエラーです。{1} compiler.err.sourcepath.modulesourcepath.conflict=--source-pathと--module-source-pathの両方を指定できません -# 0: string, 1: target -compiler.warn.source.target.conflict=ソース・リリース{0}にはターゲット・リリース{1}が必要です +# 0: string, 1: string +compiler.err.source.target.conflict=指定のターゲット・リリース{1}は、指定したソース・リリース{0}に対して古すぎます\nJDK {1}で実行するコードをコンパイルするときは、--release {1}をお薦めします -# 0: string, 1: target -compiler.warn.target.default.source.conflict=ターゲット・リリース{0}がデフォルトのソース・リリース{1}と競合しています +# 0: string, 1: string +compiler.err.target.default.source.conflict=指定のターゲット・リリース{1}は、デフォルトのソース・リリース{0}に対して古すぎます\nJDK {1}で実行するコードをコンパイルするときは、--release {1}をお薦めします # 0: profile, 1: target compiler.warn.profile.target.conflict=プロファイル{0}はターゲット・リリース{1}に対して有効ではありません diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties index 4d1174572e4..99c5df09fc1 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties @@ -186,8 +186,13 @@ compiler.err.switch.expression.empty=switch 表达式中没有任何 case 子句 compiler.err.switch.expression.no.result.expressions=switch 表达式没有任何结果表达式 -# 0: name -compiler.err.call.must.be.first.stmt.in.ctor=对{0}的调用必须是构造器中的第一个语句 +compiler.err.call.must.only.appear.in.ctor=显式构造器调用只能出现在构造器主体中 + +compiler.err.redundant.superclass.init=冗余显式构造器调用 + +compiler.err.ctor.calls.not.allowed.here=此处不允许使用显式构造器调用 + +compiler.err.return.before.superclass.initialized=在显式构造器调用之前不允许使用 ''return'' # 0: symbol kind, 1: name, 2: symbol kind, 3: type, 4: message segment compiler.err.cant.apply.symbol.noargs=无法将 {2} {3} 中的 {0} {1} 应用于给定类型;\n原因:{4} @@ -286,7 +291,7 @@ compiler.err.annotation.decl.not.allowed.here=此处不允许批注接口声明 # 0: symbol compiler.err.cant.inherit.from.final=无法从最终{0}进行继承 -# 0: symbol or string +# 0: symbol or name compiler.err.cant.ref.before.ctor.called=无法在调用超类型构造器之前引用{0} compiler.err.cant.select.static.class.from.param.type=无法从参数化的类型中选择静态类 @@ -381,9 +386,9 @@ compiler.err.duplicate.class=类重复: {0} # 0: string compiler.err.bad.file.name=文件名错误:{0} -compiler.err.unnamed.class.should.not.have.package.declaration=未命名类不应有程序包声明 +compiler.err.implicit.class.should.not.have.package.declaration=隐式声明的类不应有程序包声明 -compiler.err.unnamed.class.does.not.have.main.method=未命名类没有 void main() 或 void main(String[] args) 形式的 main 方法 +compiler.err.implicit.class.does.not.have.main.method=隐式声明的类没有 void main() 或 void main(String[] args) 形式的 main 方法 # 0: name, 1: name compiler.err.same.binary.name=类:{0} 和 {1} 具有相同的二进制名称 @@ -408,6 +413,9 @@ compiler.err.cannot.assign.not.declared.guard=无法分配给 {0},因为未在 # 0: type, 1: type compiler.err.constant.label.not.compatible={0} 类型的常量标签与 switch 选择器类型 {1} 不兼容 +# 0: type +compiler.err.selector.type.not.allowed=不允许使用选择器类型 {0} + compiler.err.flows.through.to.pattern=贯穿 (fall-through) 到模式非法 compiler.err.flows.through.from.pattern=从模式贯穿 (fall-through) 非法 @@ -959,9 +967,6 @@ compiler.err.text.block.template.is.not.well.formed=文本块模板格式不正 compiler.err.processor.missing.from.string.template.expression=字符串模板表达式缺少处理程序 -# 0: symbol -compiler.err.processor.type.cannot.be.a.raw.type=处理程序类型不能为原始类型:{0} - # 0: symbol compiler.err.not.a.processor.type=不是处理程序类型:{0} @@ -1368,6 +1373,9 @@ compiler.err.is.preview={0} 是预览 API,默认情况下处于禁用状态。 # 0: symbol compiler.warn.is.preview.reflective={0} 是反射预览 API,可能会在未来发行版中删除。 +# 0: symbol, 1: symbol +compiler.warn.restricted.method={0}.{1} 是受限制的方法。\n(受限制的方法不安全,如果使用不当,可能会导致 Java 运行时崩溃或内存损坏) + # 0: symbol compiler.warn.has.been.deprecated.module=模块 {0} 已过时 @@ -1504,11 +1512,23 @@ compiler.warn.static.not.qualified.by.type=static {0}应由类型名称{1}而不 # 0: kind name compiler.warn.static.not.qualified.by.type2=static {0} 不应用作匿名类的成员 +# 0: string, 1: fragment +compiler.warn.source.no.bootclasspath=未与 -source {0} 一起设置引导类路径\n{1} + +# 0: string, 1: fragment +compiler.warn.source.no.system.modules.path=未与 -source {0} 一起设置系统模块的位置\n{1} + # 0: string -compiler.warn.source.no.bootclasspath=未与 -source {0} 一起设置引导类路径 +compiler.misc.source.no.bootclasspath=不设置引导类路径可能会导致类文件无法在 JDK {0} 上运行\n建议使用 --release {0} 而不是 -source {0},因为它会自动设置引导类路径 # 0: string -compiler.warn.source.no.system.modules.path=未与 -source {0} 一起设置系统模块路径 +compiler.misc.source.no.system.modules.path=不设置系统模块的位置可能会导致类文件无法在 JDK {0} 上运行\n建议使用 --release {0} 而不是 -source {0},因为它会自动设置系统模块的位置 + +# 0: string, 1: string +compiler.misc.source.no.bootclasspath.with.target=不设置引导类路径可能会导致类文件无法在 JDK 8 上运行\n建议使用 --release {0} 而不是 -source {0} -target {1},因为它会自动设置引导类路径 + +# 0: string, 1: string +compiler.misc.source.no.system.modules.path.with.target=不设置系统模块的位置可能会导致类文件无法在 JDK {0} 上运行\n建议使用 --release {0} 而不是 -source {0} -target {1},因为它会自动设置系统模块的位置 # 0: string compiler.warn.option.obsolete.source=源值 {0} 已过时,将在未来发行版中删除 @@ -2262,13 +2282,17 @@ compiler.misc.feature.string.templates=字符串模板 compiler.misc.feature.unconditional.patterns.in.instanceof=instanceof 中的无条件模式 -compiler.misc.feature.unnamed.classes=未命名类 +compiler.misc.feature.implicit.classes=隐式声明的类 + +compiler.misc.feature.super.init=super() 之前的语句 compiler.warn.underscore.as.identifier=从发行版 9 开始, ''_'' 为关键字, 不能用作标识符 compiler.err.underscore.as.identifier=从发行版 9 开始, ''_'' 为关键字, 不能用作标识符 -compiler.err.use.of.underscore.not.allowed=从发行版 21 开始,下划线关键字 ''_'' 只允许用于声明\n未命名模式、本地变量、异常错误参数或 lambda 参数 +compiler.err.use.of.underscore.not.allowed=此处不允许使用下划线\n从发行版 9 开始,''_'' 为关键字,不能用作标识符\n从发行版 22 开始,''_'' 可以用作未命名模式、本地变量、异常错误参数或 lambda 参数的声明中的名称 + +compiler.err.use.of.underscore.not.allowed.non.variable=此处不允许使用下划线 compiler.err.use.of.underscore.not.allowed.with.brackets=下划线关键字 ''_'' 不允许后跟方括号 @@ -2756,7 +2780,7 @@ compiler.err.record.cannot.declare.instance.fields=字段声明必须为静态\n compiler.err.invalid.supertype.record=类无法直接扩展 {0} # 0: symbol -compiler.err.first.statement.must.be.call.to.another.constructor=构造器不是规范的,因此它的第一个语句必须调用类 {0} 的另一个构造器 +compiler.err.non.canonical.constructor.invoke.another.constructor=构造器不是规范的,因此它必须调用类 {0} 的另一个构造器 compiler.err.instance.initializer.not.allowed.in.records=记录中不允许使用实例初始化程序 @@ -2804,11 +2828,11 @@ compiler.err.error.writing.file=写入 {0} 时出错;{1} compiler.err.sourcepath.modulesourcepath.conflict=无法同时指定 --source-path 与 --module-source-path -# 0: string, 1: target -compiler.warn.source.target.conflict=源发行版 {0} 需要目标发行版 {1} +# 0: string, 1: string +compiler.err.source.target.conflict=指定的目标发行版 {1} 对于指定的源发行版 {0} 来说太旧\n当编译要在 JDK {1} 上运行的代码时,建议使用 --release {1} -# 0: string, 1: target -compiler.warn.target.default.source.conflict=目标发行版 {0} 与默认的源发行版 {1} 冲突 +# 0: string, 1: string +compiler.err.target.default.source.conflict=指定的目标发行版 {1} 对于默认源发行版 {0} 来说太旧\n当编译要在 JDK {1} 上运行的代码时,建议使用 --release {1} # 0: profile, 1: target compiler.warn.profile.target.conflict=配置文件{0}对于目标发行版 {1} 无效 diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_de.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_de.properties index 28713811eee..cc3bea6c763 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_de.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_de.properties @@ -125,6 +125,8 @@ javac.opt.Xlint.desc.fallthrough=Warnt vor Weitergabe von einem Case einer Switc javac.opt.Xlint.desc.finally=Warnt vor Finally-Klauseln, die nicht normal beendet werden. +javac.opt.Xlint.desc.incubating=Warnt vor der Verwendung von Inkubatormodulen. + javac.opt.Xlint.desc.lossy-conversions=Warnung über möglichen Verlust von Konvertierungen in zusammengesetzten Zuweisungen. javac.opt.Xlint.desc.module=Warnt vor Problemen im Zusammenhang mit dem Modulsystem. @@ -157,7 +159,7 @@ javac.opt.Xlint.desc.static=Warnt vor Zugriff auf ein statisches Mitglied mit ei javac.opt.Xlint.desc.strictfp=Warnt vor unnötiger Verwendung des strictfp-Modifizierers. -javac.opt.Xlint.desc.text-blocks=Warnt vor inkonsistenten Leerzeichen in Textblockeinrückung. +javac.opt.Xlint.desc.text-blocks=Warnt vor inkonsistenten Leerzeichen in Textblockeinzug. javac.opt.Xlint.desc.this-escape=Warnt, wenn ein Konstruktor eine Methode aufruft, die in einer externen Unterklasse außer Kraft gesetzt werden könnte.\n Diese Methoden werden ausgeführt, bevor die Initialisierung des Unterklassenkonstruktors abgeschlossen wird. @@ -169,6 +171,8 @@ javac.opt.Xlint.desc.varargs=Warnt vor möglicherweise nicht sicheren vararg-Met javac.opt.Xlint.desc.preview=Warnt vor Verwendung von Vorschausprachfeatures. +javac.opt.Xlint.desc.restricted=Warnt vor der Verwendung eingeschränkter Methoden. + javac.opt.Xlint.desc.synchronization=Warnt vor Synchronisierungsversuchen mit Instanzen wertbasierter Klassen. javac.opt.Xdoclint=Empfohlene Prüfungen für Probleme in javadoc-Kommentaren aktivieren diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties index 43577bb6e1f..f33c2c54cea 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties @@ -125,6 +125,8 @@ javac.opt.Xlint.desc.fallthrough=switch文の1つのcaseから次へのフォー javac.opt.Xlint.desc.finally=正常に完了しないfinally節について警告します。 +javac.opt.Xlint.desc.incubating=実験的なモジュールの使用について警告します。 + javac.opt.Xlint.desc.lossy-conversions=複合代入における精度が失われる可能性がある変換についての警告。 javac.opt.Xlint.desc.module=モジュール・システム関連の問題について警告します。 @@ -169,6 +171,8 @@ javac.opt.Xlint.desc.varargs=安全ではない可能性がある可変引数メ javac.opt.Xlint.desc.preview=プレビュー言語機能の使用について警告します +javac.opt.Xlint.desc.restricted=制限されたメソッドの使用について警告します。 + javac.opt.Xlint.desc.synchronization=値ベース・クラスのインスタンスでの同期の試行について警告します。 javac.opt.Xdoclint=javadocコメントの問題に関する推奨チェックを有効にします diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties index 8af8426bbc0..64e031ed381 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties @@ -125,6 +125,8 @@ javac.opt.Xlint.desc.fallthrough=有关从 switch 语句的一个 case 向下顺 javac.opt.Xlint.desc.finally=有关 finally 子句未正常终止的警告。 +javac.opt.Xlint.desc.incubating=有关使用 incubating 模块的警告。 + javac.opt.Xlint.desc.lossy-conversions=有关复合赋值中的转换可能会有损失的警告。 javac.opt.Xlint.desc.module=有关模块系统相关问题的警告。 @@ -169,6 +171,8 @@ javac.opt.Xlint.desc.varargs=有关潜在不安全的 vararg 方法的警告。 javac.opt.Xlint.desc.preview=有关使用预览语言功能的警告。 +javac.opt.Xlint.desc.restricted=有关使用受限制方法的警告。 + javac.opt.Xlint.desc.synchronization=有关尝试在基于值的类的实例上同步的警告。 javac.opt.Xdoclint=为 javadoc 注释中的问题启用建议的检查 diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_de.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_de.properties index a41cc744b3d..b59b227ddcb 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_de.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_de.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -123,3 +123,8 @@ launcher.err.no.value.for.option=kein Wert angegeben für Option: {0} launcher.err.invalid.value.for.source=ungültiger Wert für Option --source: {0} launcher.err.enable.preview.requires.source=--enable-preview muss mit --source verwendet werden + +launcher.err.unnamed.pkg.not.allowed.named.modules=Unbenanntes Package ist in benannten Modulen nicht zulässig + +# 0: string, 1: path +launcher.err.mismatch.end.of.path.and.package.name=Ende des Pfades für die Ausgangsdatei stimmt nicht mit dem zugehörigen Packagenamen {0} überein: {1} diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_ja.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_ja.properties index f156f18b078..8bb25907bcd 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_ja.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_ja.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -123,3 +123,8 @@ launcher.err.no.value.for.option=オプションに値が指定されていま launcher.err.invalid.value.for.source=--sourceオプションの値が無効です: {0} launcher.err.enable.preview.requires.source=--enable-previewは--sourceとともに使用する必要があります + +launcher.err.unnamed.pkg.not.allowed.named.modules=名前のないパッケージは名前付きモジュールでは許可されません + +# 0: string, 1: path +launcher.err.mismatch.end.of.path.and.package.name=ソース・ファイルへのパスの終わりがパッケージ名{0}と一致しません: {1} diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_zh_CN.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_zh_CN.properties index 7d154f8d556..81976d40b86 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_zh_CN.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -123,3 +123,8 @@ launcher.err.no.value.for.option=没有为选项 {0} 指定值 launcher.err.invalid.value.for.source=--source 选项的值无效:{0}\n launcher.err.enable.preview.requires.source=--enable-preview 必须与 --source 一起使用 + +launcher.err.unnamed.pkg.not.allowed.named.modules=命名模块中不允许未命名程序包 + +# 0: string, 1: path +launcher.err.mismatch.end.of.path.and.package.name=源文件的路径结尾与其程序包名称 {0} 不匹配:{1} diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_de.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_de.properties index 83db8ca164e..1bdbb5d0614 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_de.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_de.properties @@ -85,6 +85,7 @@ doclet.navDeprecated=Veraltet doclet.Window_Deprecated_List=Veraltete Liste doclet.Window_New_List=Neue API-Liste doclet.Window_Preview_List=Vorschauliste +doclet.Window_Restricted_List=Liste eingeschränkter Methoden doclet.Overrides=Setzt außer Kraft: doclet.in_class=in Klasse doclet.Element_in=Element in {0} @@ -129,6 +130,8 @@ doclet.Preview_API_Checkbox_Label=Vorschau-API anzeigen für: doclet.Preview_JEP_URL=https://openjdk.org/jeps/{0} doclet.Preview_Label=Vorschau doclet.Preview_Mark=PREVIEW +doclet.Restricted_Methods=Eingeschränkte Methoden +doclet.Restricted_Mark=RESTRICTED doclet.Terminally_Deprecated=Endgültig veraltet doclet.Terminally_Deprecated_Elements=Endgültig veraltete Elemente doclet.Terminally_Deprecated_In_Release=Endgültig veraltet in {0} @@ -237,6 +240,7 @@ doclet.help.deprecated.body=Auf der Seite {0} werden alle APIs aufgeführt, die # 0: link to the Preview summary page doclet.help.preview.body=Die Seite {0} listet alle Vorschau-APIs auf. Vorschau-APIs können in künftigen Implementierungen entfernt werden. doclet.help.new.body=Die Seite {0} listet APIs auf, die in neueren Releases hinzugefügt wurden. +doclet.help.restricted.body=Auf der Seite {0} sind alle eingeschränkten Methoden aufgelistet. Eingeschränkte Methoden sind nicht sicher und können bei falscher Verwendung die JVM zum Absturz bringen oder zu einer Beschädigung des Arbeitsspeichers führen. doclet.help.index.head=Index # 0: link to Index page; 1: list of links to pages doclet.help.index.body=Die {0} enthält einen alphabetischen Index aller Klassen, Schnittstellen, Konstruktoren, Methoden und Felder in der Dokumentation sowie Übersichtsseiten wie {1}. @@ -313,6 +317,9 @@ doclet.ReflectivePreviewAPI={0} bezieht sich auf mindestens eine reflektive Vors doclet.UsesDeclaredUsingPreview={0} bezieht sich auf mindestens einen Typ, der mit einem Vorschaufeature der Programmiersprache Java deklariert wird: {1}. doclet.PreviewTrailingNote1=Programme können {0} nur verwenden, wenn Vorschaufeatures aktiviert sind. doclet.PreviewTrailingNote2=Vorschaufeatures können in künftigen Releases entfernt oder zu permanenten Features der Java-Plattform hochgestuft werden. +doclet.RestrictedLeadingNote={0} ist eine eingeschränkte Methode der Java-Plattform. +doclet.RestrictedTrailingNote1=Programme können {0} nur verwenden, wenn der Zugriff auf eingeschränkte Methoden aktiviert ist. +doclet.RestrictedTrailingNote2=Eingeschränkte Methoden sind nicht sicher und können bei falscher Verwendung die JVM zum Absturz bringen oder zu einer Beschädigung des Arbeitsspeichers führen. doclet.Declared_Using_Preview.SEALED=Verschlüsselte Klassen doclet.Declared_Using_Preview.SEALED_PERMITS=Verschlüsselte Klassen doclet.PreviewPlatformLeadingNote={0} ist eine Vorschau-API der Java-Plattform. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties index 9856fd77729..1764587769b 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties @@ -85,6 +85,7 @@ doclet.navDeprecated=非推奨 doclet.Window_Deprecated_List=非推奨APIのリスト doclet.Window_New_List=新規APIリスト doclet.Window_Preview_List=リストのプレビュー +doclet.Window_Restricted_List=制限されたメソッド・リスト doclet.Overrides=オーバーライド: doclet.in_class=クラス内 doclet.Element_in={0}の要素 @@ -129,6 +130,8 @@ doclet.Preview_API_Checkbox_Label=次のプレビューAPIを表示: doclet.Preview_JEP_URL=https://openjdk.org/jeps/{0} doclet.Preview_Label=プレビュー doclet.Preview_Mark=PREVIEW +doclet.Restricted_Methods=制限されたメソッド +doclet.Restricted_Mark=RESTRICTED doclet.Terminally_Deprecated=最終的に非推奨 doclet.Terminally_Deprecated_Elements=最終的に非推奨になった要素 doclet.Terminally_Deprecated_In_Release={0}で最終的に非推奨 @@ -237,6 +240,7 @@ doclet.help.deprecated.body={0}ページは、推奨されていないすべて # 0: link to the Preview summary page doclet.help.preview.body={0}ページは、すべてのプレビューAPIのリストを表示します。プレビューAPIは今後の実装で削除される可能性があります。 doclet.help.new.body={0}ページは、最近のリリースで追加されたAPIのリストを表示します。 +doclet.help.restricted.body={0}ページには、すべての制限されたメソッドのリストがあります。制限されたメソッドは安全ではありません。不適切に使用した場合、JVMがクラッシュまたはメモリーが破損する場合があります。 doclet.help.index.head=索引 # 0: link to Index page; 1: list of links to pages doclet.help.index.body={0}には、ドキュメント内のすべてのクラス、インタフェース、コンストラクタ、メソッドおよびフィールドのアルファベット順の索引と、{1}などの概要ページが含まれます。 @@ -313,6 +317,9 @@ doclet.ReflectivePreviewAPI={0}は1つ以上のリフレクティブ・プレビ doclet.UsesDeclaredUsingPreview={0}は、Java言語のプレビュー機能を使用して宣言されている、1つ以上のタイプを参照しています: {1}。 doclet.PreviewTrailingNote1=プログラムは、プレビュー機能が有効になっている場合にのみ{0}を使用できます。 doclet.PreviewTrailingNote2=プレビュー機能は将来のリリースで削除されるか、Javaプラットフォームの永続的な機能にアップグレードされる可能性があります。 +doclet.RestrictedLeadingNote={0}はJavaプラットフォームの制限されたメソッドです。 +doclet.RestrictedTrailingNote1=プログラムは、制限されたメソッドへのアクセスが有効になっている場合にのみ{0}を使用できます。 +doclet.RestrictedTrailingNote2=制限されたメソッドは安全ではありません。不適切に使用した場合、JVMがクラッシュまたはメモリーが破損する場合があります。 doclet.Declared_Using_Preview.SEALED=シール・クラス doclet.Declared_Using_Preview.SEALED_PERMITS=シール・クラス doclet.PreviewPlatformLeadingNote={0}はJavaプラットフォームのプレビューAPIです。 diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties index ccc6807a368..5dcd3dce996 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties @@ -85,6 +85,7 @@ doclet.navDeprecated=已过时 doclet.Window_Deprecated_List=已过时的列表 doclet.Window_New_List=新 API 列表 doclet.Window_Preview_List=预览列表 +doclet.Window_Restricted_List=受限制方法列表 doclet.Overrides=覆盖: doclet.in_class=在类中 doclet.Element_in={0} 中的元素 @@ -129,6 +130,8 @@ doclet.Preview_API_Checkbox_Label=显示预览 API: doclet.Preview_JEP_URL=https://openjdk.org/jeps/{0} doclet.Preview_Label=预览 doclet.Preview_Mark=PREVIEW +doclet.Restricted_Methods=受限制的方法 +doclet.Restricted_Mark=RESTRICTED doclet.Terminally_Deprecated=最终已过时 doclet.Terminally_Deprecated_Elements=最终已过时的元素 doclet.Terminally_Deprecated_In_Release=最终在 {0} 中已过时 @@ -237,6 +240,7 @@ doclet.help.deprecated.body={0} 页面列出了所有已过时的 API。通常 # 0: link to the Preview summary page doclet.help.preview.body={0} 页面列出了所有预览 API。在将来的实施中,可能会删除预览 API。 doclet.help.new.body={0} 页面列出了最近的发行版中已添加的 API。 +doclet.help.restricted.body={0} 页面列出了所有受限制的方法。受限制的方法不安全,如果使用不当,可能会导致 JVM 崩溃或内存损坏。 doclet.help.index.head=索引 # 0: link to Index page; 1: list of links to pages doclet.help.index.body={0} 包含文档中所有类、接口、构造器、方法和字段的按字母顺序排列的索引,以及概要页(例如 {1})。 @@ -313,6 +317,9 @@ doclet.ReflectivePreviewAPI={0} 引用一个或多个反射预览 API:{1}。 doclet.UsesDeclaredUsingPreview={0} 引用一个或多个类型,这些类型是使用 Java 语言 {1} 的预览功能声明的。 doclet.PreviewTrailingNote1=只有在启用了预览功能时,程序才能使用 {0}。 doclet.PreviewTrailingNote2=预览功能可能会在未来发行版中删除,也可能会升级为 Java 平台的永久功能。 +doclet.RestrictedLeadingNote={0} 是 Java 平台的受限制方法。 +doclet.RestrictedTrailingNote1=只有在启用了对受限制方法的访问时,程序才能使用 {0}。 +doclet.RestrictedTrailingNote2=受限制的方法不安全,如果使用不当,可能会导致 JVM 崩溃或内存损坏。 doclet.Declared_Using_Preview.SEALED=密封类 doclet.Declared_Using_Preview.SEALED_PERMITS=密封类 doclet.PreviewPlatformLeadingNote={0} 是 Java 平台的预览 API。 diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_de.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_de.properties index a6ccd29a36e..0c3068cd666 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_de.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_de.properties @@ -107,8 +107,8 @@ doclet.Since=Seit: doclet.Throws=Löst aus: doclet.Version=Version: doclet.Factory=Factory: -doclet.UnknownTag={0} ist ein unbekanntes Tag. -doclet.UnknownTagLowercase={0} ist ein unbekanntes Tag - bis auf die Groß-/Kleinschreibung identisch mit einem bekannten Tag. +doclet.UnknownTag=Unbekanntes Tag. Nicht registriertes benutzerdefiniertes Tag? +doclet.UnknownTagWithHint=Unbekanntes Tag. @{0} falsch eingegeben oder nicht registriertes benutzerdefiniertes Tag? doclet.inheritDocBadSupertype=Die außer Kraft gesetzte Methode kann nicht gefunden werden doclet.inheritDocWithinInappropriateTag=@inheritDoc kann in diesem Tag nicht verwendet werden doclet.inheritDocNoDoc=überschriebene Methoden dokumentieren Ausnahmetyp {0} nicht @@ -203,6 +203,7 @@ doclet.dest_dir_create=Zielverzeichnis wird erstellt: "{0}" doclet.in={0} in {1} doclet.Fields=Felder doclet.Preview=Vorschau. +doclet.Restricted=Eingeschränkt. doclet.Properties=Eigenschaften doclet.Constructors=Konstruktoren doclet.Methods=Methoden diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties index 90ef0936298..cb4c5fa9b39 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties @@ -107,8 +107,8 @@ doclet.Since=導入されたバージョン: doclet.Throws=例外: doclet.Version=バージョン: doclet.Factory=ファクトリ: -doclet.UnknownTag={0}は不明なタグです。 -doclet.UnknownTagLowercase={0}は不明なタグです。大文字と小文字の区別を除いては既知のタグと同じです。 +doclet.UnknownTag=不明なタグ。未登録のカスタム・タグ? +doclet.UnknownTagWithHint=不明なタグ。入力ミスによる@{0}または未登録のカスタム・タグ? doclet.inheritDocBadSupertype=オーバーライドされたメソッドが見つかりません doclet.inheritDocWithinInappropriateTag=@inheritDocは、このタグ内では使用できません doclet.inheritDocNoDoc=オーバーライドされたメソッドでは、例外タイプ{0}はドキュメント化されません @@ -203,6 +203,7 @@ doclet.dest_dir_create=宛先ディレクトリの作成中: "{0}" doclet.in={1}の{0} doclet.Fields=フィールド doclet.Preview=プレビュー。 +doclet.Restricted=制限付き。 doclet.Properties=プロパティ doclet.Constructors=コンストラクタ doclet.Methods=メソッド diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties index f4ee607773a..9618d8f12b7 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties @@ -107,8 +107,8 @@ doclet.Since=从以下版本开始: doclet.Throws=抛出: doclet.Version=版本: doclet.Factory=工厂: -doclet.UnknownTag={0}是未知标记。 -doclet.UnknownTagLowercase={0}是未知标记 - 除了大小写之外其他方面与已知标记相同。 +doclet.UnknownTag=未知标记。已注销的定制标记? +doclet.UnknownTagWithHint=未知标记。@{0} 键入有误或为已注销的定制标记? doclet.inheritDocBadSupertype=找不到被覆盖的方法 doclet.inheritDocWithinInappropriateTag=不能在此标记中使用 @inheritDoc doclet.inheritDocNoDoc=被覆盖的方法不记录异常错误类型 {0} @@ -203,6 +203,7 @@ doclet.dest_dir_create=正在创建目标目录: "{0}" doclet.in={1}中的{0} doclet.Fields=字段 doclet.Preview=预览。 +doclet.Restricted=受限制。 doclet.Properties=属性 doclet.Constructors=构造器 doclet.Methods=方法 diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint_de.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint_de.properties index f5def4487d8..fa90d654d66 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint_de.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint_de.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2012, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -84,6 +84,8 @@ dc.tag.p.in.pre= unerwartete Verwendung von

in

-Element
 dc.tag.requires.heading = Überschrift nicht gefunden für 
 dc.tag.self.closing = selbstschließendes Element nicht zulässig
 dc.tag.start.unmatched = Endtag fehlt: 
+dc.unknown.javadoc.tag = Unbekanntes Tag. Nicht registriertes benutzerdefiniertes Tag?
+dc.unknown.javadoc.tag.with.hint = Unbekanntes Tag. @{0} falsch eingegeben oder nicht registriertes benutzerdefiniertes Tag?
 dc.tag.unknown = unbekanntes Tag: {0}
 dc.tag.not.supported.html5 = Tag nicht unterstützt in HTML5: {0}
 dc.text.not.allowed = Text nicht zulässig in <{0}>-Element
diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint_ja.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint_ja.properties
index 3cefffb73c5..3c310ff9d75 100644
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint_ja.properties
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint_ja.properties
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2012, 2022, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -84,6 +84,8 @@ dc.tag.p.in.pre= 
要素内で予期しない

が使用されています dc.tag.requires.heading = の見出しが見つかりません dc.tag.self.closing = 自己終了要素は使用できません dc.tag.start.unmatched = 終了タグがありません: +dc.unknown.javadoc.tag = 不明なタグ。未登録のカスタム・タグ? +dc.unknown.javadoc.tag.with.hint = 不明なタグ。入力ミスによる@{0}または未登録のカスタム・タグ? dc.tag.unknown = 不明なタグ: {0} dc.tag.not.supported.html5 = タグはHTML5でサポートされていません: {0} dc.text.not.allowed = <{0}>要素ではテキストを使用できません diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint_zh_CN.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint_zh_CN.properties index 9ef0155d9c0..286a797e71c 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint_zh_CN.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2012, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -84,6 +84,8 @@ dc.tag.p.in.pre=

 元素内部意外地使用了 

dc.tag.requires.heading = 未找到 的标题 dc.tag.self.closing = 不允许使用自关闭元素 dc.tag.start.unmatched = 缺少结束标记: +dc.unknown.javadoc.tag = 未知标记。已注销的定制标记? +dc.unknown.javadoc.tag.with.hint = 未知标记。@{0} 键入有误或为已注销的定制标记? dc.tag.unknown = 未知标记: {0} dc.tag.not.supported.html5 = 标记在 HTML5 中不受支持:{0} dc.text.not.allowed = <{0}> 元素中不允许使用文本 diff --git a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_de.properties b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_de.properties index 8586041d417..500d6bf7f73 100644 --- a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_de.properties +++ b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_de.properties @@ -44,7 +44,7 @@ error.no.xcode.signing.advice=Installieren Sie Xcode mit Befehlszeilen-Entwickle error.cert.not.found=Kein Zertifikat gefunden, das [{0}] mit Schlüsselbund [{1}] entspricht error.multiple.certs.found=WARNUNG: Mehrere Zertifikate gefunden, die [{0}] mit Schlüsselbund [{1}] entsprechen. Es wird das erste Zertifikat verwendet error.app-image.mac-sign.required=Fehler: Die Option "--mac-sign" ist mit einem vordefinierten Anwendungsimage und Typ [app-image] erforderlich -error.tool.failed.with.output=Error: "{0}" failed with following output: +error.tool.failed.with.output=Fehler: "{0}" nicht erfolgreich mit folgender Ausgabe: resource.bundle-config-file=Bundle-Konfigurationsdatei resource.app-info-plist=Info.plist der Anwendung resource.runtime-info-plist=Info.plist von Java Runtime diff --git a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_ja.properties b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_ja.properties index 518e3e45f97..c1d1833383a 100644 --- a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_ja.properties +++ b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_ja.properties @@ -44,7 +44,7 @@ error.no.xcode.signing.advice=Xcodeとコマンドライン・デベロッパ・ error.cert.not.found=キーチェーン[{1}]を使用する[{0}]と一致する証明書が見つかりません error.multiple.certs.found=警告: キーチェーン[{1}]を使用する[{0}]と一致する複数の証明書が見つかりました。最初のものを使用します error.app-image.mac-sign.required=エラー: --mac-signオプションは、事前定義済アプリケーション・イメージおよびタイプ[app-image]で必要です -error.tool.failed.with.output=Error: "{0}" failed with following output: +error.tool.failed.with.output=エラー: "{0}"は次の出力で失敗しました: resource.bundle-config-file=バンドル構成ファイル resource.app-info-plist=アプリケーションのInfo.plist resource.runtime-info-plist=JavaランタイムのInfo.plist diff --git a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_zh_CN.properties b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_zh_CN.properties index c4e4bd22939..e295bc6a32c 100644 --- a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_zh_CN.properties +++ b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_zh_CN.properties @@ -44,7 +44,7 @@ error.no.xcode.signing.advice=安装带命令行开发人员工具的 Xcode。 error.cert.not.found=使用密钥链 [{1}] 找不到与 [{0}] 匹配的证书 error.multiple.certs.found=警告:使用密钥链 [{1}] 找到多个与 [{0}] 匹配的证书,将使用第一个证书 error.app-image.mac-sign.required=错误:预定义的应用程序映像和类型 [app image] 需要 --mac-sign 选项 -error.tool.failed.with.output=Error: "{0}" failed with following output: +error.tool.failed.with.output=错误:"{0}" 失败,显示以下输出: resource.bundle-config-file=包配置文件 resource.app-info-plist=应用程序 Info.plist resource.runtime-info-plist=Java 运行时 Info.plist diff --git a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_de.properties b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_de.properties index 3d5f5171d73..f060abe314f 100644 --- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_de.properties +++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_de.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2017, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -32,7 +32,7 @@ MSG_Help_win_launcher=\nPlattformabhängige Option für das Erstellen des Anwend MSG_Help_win_install=\ --win-dir-chooser\n Fügt ein Dialogfeld hinzu, in dem der Benutzer das Verzeichnis auswählen kann, in dem\n das Produkt installiert wird.\n --win-help-url \n URL, unter der der Benutzer weitere Informationen oder technische Unterstützung erhält\n --win-menu\n Anforderung zum Hinzufügen einer Startmenüverknüpfung für diese Anwendung\n --win-menu-group \n Startmenügruppe, in der diese Anwendung abgelegt wird\n --win-per-user-install\n Anforderung zum Ausführen einer Installation pro Benutzer\n --win-shortcut\n Anforderung zum Hinzufügen einer Desktopverknüpfung für diese Anwendung\n --win-shortcut-prompt\n Fügt ein Dialogfeld hinzu, in dem der Benutzer auswählen kann, ob Verknüpfungen\n vom Installationsprogramm erstellt werden sollen.\n --win-update-url \n URL verfügbarer Anwendungsupdateinformationen\n --win-upgrade-uuid \n UUID, die mit Upgrades für dieses Package verknüpft ist\n MSG_Help_win_install_dir=Relativer Unterpfad unter dem Standardinstallationsverzeichnis\n MSG_Help_mac_install=\ --mac-dmg-content [,...]\n Nimmt den gesamten referenzierten Inhalt in die DMG-Datei auf.\n Diese Option kann mehrmals verwendet werden. \n -MSG_Help_mac_launcher=\ --mac-package-identifier \n Eine ID, die die Anwendung für macOS eindeutig identifiziert\n Standardwert ist der Hauptklassenname.\n Es dürfen nur alphanumerische Zeichen (A-Z, a-z, 0-9), Bindestriche (-)\n und Punkte (.) verwendet werden.\n --mac-package-name \n Name der Anwendung, wie in der Menüleiste angezeigt\n Dieser kann vom Anwendungsnamen abweichen.\n Er darf maximal 15 Zeichen enthalten und muss für die Anzeige\n in der Menüleiste und im Infofenster der Anwendung geeignet sein.\n Standardwert: Anwendungsname.\n --mac-package-signing-prefix \n Beim Signieren des Anwendungspackages wird dieser Wert\n allen zu signierenden Komponenten ohne vorhandene\n Package-ID als Präfix vorangestellt.\n --mac-sign\n Anforderung zum Signieren des Packages oder des vordefinierten\nAnwendungsimages\n --mac-signing-keychain \n Name des Schlüsselbundes für die Suche nach der Signaturidentität\n Bei fehlender Angabe werden die Standardschlüsselbunde verwendet.\n --mac-signing-key-user-name \n Team- oder Benutzernamensteil der Apple-Signaturidentitäten.\n --mac-app-store\n Gibt an, dass die jpackage-Ausgabe für den\n Mac App Store bestimmt ist.\n --mac-entitlements \n Pfad zu einer Datei mit Berechtigungen, die beim Signieren\n von ausführbaren Dateien und Librarys im Bundle verwendet werden sollen.\n --mac-app-category \n Zeichenfolge für das Erstellen von LSApplicationCategoryType in\n Anwendungs-plist. Standardwert: "utilities".\n +MSG_Help_mac_launcher=\ --mac-package-identifier \n Eine ID, die die Anwendung für macOS eindeutig identifiziert\n Standardwert ist der Hauptklassenname.\n Es dürfen nur alphanumerische Zeichen (A-Z, a-z, 0-9), Bindestriche (-)\n und Punkte (.) verwendet werden.\n --mac-package-name \n Name der Anwendung, wie in der Menüleiste angezeigt\n Dieser kann vom Anwendungsnamen abweichen.\n Er darf maximal 15 Zeichen enthalten und muss für die Anzeige\n in der Menüleiste und im Infofenster der Anwendung geeignet sein.\n Standardwert: Anwendungsname.\n --mac-package-signing-prefix \n Beim Signieren des Anwendungspackages wird dieser Wert\n allen zu signierenden Komponenten ohne vorhandene\n Package-ID als Präfix vorangestellt.\n --mac-sign\n Anforderung zum Signieren des Packages oder des vordefinierten\nAnwendungsimages\n --mac-signing-keychain \n Name des Schlüsselbundes für die Suche nach der Signaturidentität\n Bei fehlender Angabe werden die Standardschlüsselbunde verwendet.\n --mac-signing-key-user-name \n Team- oder Benutzernamensteil der Apple-Signaturidentitäten. Um direkt zu steuern,\n welche Signaturidentität zum Signieren eines Anwendungsimages oder\n Installationsprogramms verwendet wird, verwenden Sie --mac-app-image-sign-identity und/oder\n --mac-installer-sign-identity. Diese Option kann nicht mit\n --mac-app-image-sign-identity oder --mac-installer-sign-identity kombiniert werden.\n --mac-app-image-sign-identity \n Zum Signieren des Anwendungsimages verwendete Identität. Dieser Wert wird\n direkt an die Option --sign des Tools "codesign" übergeben. Diese Option kann nicht\n mit --mac-signing-key-user-name kombiniert werden.\n --mac-installer-sign-identity \n Zum Signieren des Installationsprogramms "pkg" verwendete Identität. Dieser Wert wird\n direkt an die Option --sign des Tools "productbuild" übergeben. Diese Option\n kann nicht mit --mac-signing-key-user-name kombiniert werden.\n --mac-app-store\n Gibt an, dass die jpackage-Ausgabe für den\n Mac App Store bestimmt ist.\n --mac-entitlements \n Pfad zu einer Datei mit Berechtigungen, die beim Signieren\n von ausführbaren Dateien und Librarys im Bundle verwendet werden sollen.\n --mac-app-category \n Zeichenfolge für das Erstellen von LSApplicationCategoryType in\n Anwendungs-plist. Standardwert: "utilities".\n MSG_Help_linux_install=\ --linux-package-name \n Name für das Linux-Package, Standardwert: Anwendungsname\n --linux-deb-maintainer \n Maintainer für .deb-Package\n --linux-menu-group \n Menügruppe, in der diese Anwendung abgelegt wird\n --linux-package-deps\n Erforderliche Packages oder Funktionen für die Anwendung\n --linux-rpm-license-type \n Typ der Lizenz ("License: " der RPM-SPEC-Datei)\n --linux-app-release \n Releasewert der RPM-SPEC-Datei oder \n Debian-Revisionswert der DEB-Kontrolldatei\n --linux-app-category \n Gruppenwert der RPM-SPEC-Datei oder \n Abschnittswert der DEB-Kontrolldatei\n --linux-shortcut\n Erstellt eine Verknüpfung für die Anwendung.\n MSG_Help_mac_linux_install_dir=Absoluter Pfad des Installationsverzeichnisses der Anwendung\n MSG_Help_default_install_dir=Absoluter Pfad des Installationsverzeichnisses der Anwendung auf OS X\n oder Linux. Relativer Unterpfad des Installationsverzeichnisses der\n Anwendung wie "Programme" oder "AppData" unter Windows.\n diff --git a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_ja.properties b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_ja.properties index 6e377ed6e38..39483b8f116 100644 --- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_ja.properties +++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_ja.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2017, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -34,7 +34,8 @@ MSG_Help_win_launcher=\nアプリケーション・ランチャを作成する MSG_Help_win_install=\ --win-dir-chooser\n ユーザーが製品をインストールするディレクトリを選択するための\n ダイアログを追加します。\n --win-help-url \n ユーザーが詳細情報または技術的なサポートを取得できるURL\n --win-menu\n このアプリケーションのスタート・メニュー・ショートカットを追加するようにリクエストします\n --win-menu-group

\n このアプリケーションを配置するスタート・メニュー・グループ\n --win-per-user-install\n ユーザーごとにインストールを実行するようにリクエストします\n --win-shortcut\n このアプリケーションのデスクトップ・ショートカットを追加するようにリクエストします\n --win-shortcut-prompt\n ショートカットをインストーラで作成するかどうかをユーザーが選択できるようにする\n ダイアログを追加します。\n --win-update-url \n 使用可能なアプリケーションの更新情報のURL\n --win-upgrade-uuid \n このパッケージのアップグレードに関連付けられたUUID\n MSG_Help_win_install_dir=デフォルトのインストール場所の下の相対サブパス\n MSG_Help_mac_install=\ --mac-dmg-content [,...]\n dmgに参照されたコンテンツをすべて含めます。\n このオプションは複数回使用できます。 \n -MSG_Help_mac_launcher=\ --mac-package-identifier \n macOSのアプリケーションを一意に識別するID\n メイン・クラス名にデフォルト設定されています。\n 英数字(A-Z、a-z、0-9)、ハイフン(-)およびピリオド(.)文字のみ\n 使用できます。\n --mac-package-name \n メニュー・バーに表示されるアプリケーションの名前\n アプリケーション名とは異なります。\n この名前は16文字未満にする必要があり、メニュー・バーおよびアプリケーション情報ウィンドウに\n 表示するのに適している必要があります。\n アプリケーション名にデフォルト設定されています。\n --mac-package-signing-prefix \n アプリケーション・パッケージに署名する際、\n 既存のパッケージIDのない署名が必要なすべてのコンポーネントに、\n この値が接頭辞として付けられます。\n --mac-sign\n パッケージまたは事前定義済みアプリケーション・イメージに署名するよう\n リクエストします。\n --mac-signing-keychain \n 署名アイデンティティを検索するキーチェーンの名前\n 指定しなかった場合、標準のキーチェーンが使用されます。\n --mac-signing-key-user-name \n Apple署名アイデンティティのチームまたはユーザー名部分。\n --mac-app-store\n jpackage出力がMac App Store用であること\n を示します。\n --mac-entitlements \n バンドルの実行可能ファイルおよびライブラリの署名時に\n 使用する権限を含むファイルのパス。\n --mac-app-category \n アプリケーションのplistのLSApplicationCategoryTypeを生成する際に使用する文字列。\n デフォルト値は"utilities"です。\n +MSG_Help_mac_launcher=\ --mac-package-identifier \n macOSのアプリケーションを一意に識別するID\n メイン・クラス名にデフォルト設定されています。\n 英数字(A-Z、a-z、0-9)、ハイフン(-)およびピリオド(.)文字のみ\n 使用できます。\n --mac-package-name \n メニュー・バーに表示されるアプリケーションの名前\n アプリケーション名とは異なります。\n この名前は16文字未満にする必要があり、メニュー・バーおよびアプリケーション情報ウィンドウに\n 表示するのに適している必要があります。\n アプリケーション名にデフォルト設定されています。\n --mac-package-signing-prefix \n アプリケーション・パッケージに署名する際、\n 既存のパッケージIDのない署名が必要なすべてのコンポーネントに、\n この値が接頭辞として付けられます。\n --mac-sign\n パッケージまたは事前定義済アプリケーション・イメージに署名するよう\n リクエストします。\n --mac-signing-keychain \n 署名アイデンティティを検索するキーチェーンの名前\n 指定しなかった場合、標準のキーチェーンが使用されます。\n --mac-signing-key-user-name \n Apple署名アイデンティティのチームまたはユーザー名部分。\n アプリケーション・イメージまたはインストーラの署名に使用する署名アイデンティティの\n 直接制御には、--mac-app-image-sign-identityまたは\n --mac-installer-sign-identity(あるいは両方)を使用します。このオプションは\n --mac-app-image-sign-identityまたは--mac-installer-sign-identityと組み合せることはできません。\n --mac-app-image-sign-identity \n アプリケーション・イメージの署名に使用するアイデンティティ。この値は直接\n "codesign"ツールの--signオプションに渡されます。このオプションは\n \ +--mac-signing-key-user-nameと組み合せることはできません。\n --mac-installer-sign-identity \n "pkg"インストーラの署名に使用するアイデンティティ。この値は直接\n "productbuild"ツールの--signオプションに渡されます。このオプションは\n --mac-signing-key-user-nameと組み合せることはできません。\n --mac-app-store\n jpackage出力がMac App Store用であること\n を示します。\n --mac-entitlements \n バンドルの実行可能ファイルおよびライブラリの署名時に\n 使用する権限を含むファイルのパス。\n --mac-app-category \n アプリケーションのplistのLSApplicationCategoryTypeを生成する際に使用する文字列。\n デフォルト値は"utilities"です。\n MSG_Help_linux_install=\ --linux-package-name \n Linuxパッケージの名前。アプリケーション名にデフォルト設定されています\n --linux-deb-maintainer \n .debパッケージのMaintainer\n --linux-menu-group \n このアプリケーションが配置されているメニュー・グループ\n --linux-package-deps\n アプリケーションに必要なパッケージまたは機能\n --linux-rpm-license-type \n ライセンスのタイプ(RPM .specの"License: ")\n --linux-app-release \n RPM .specファイルのリリース値または\n DEBコントロール・ファイルのDebianリビジョン値。\n --linux-app-category \n RPM .specファイルのグループ値または \n DEBコントロール・ファイルのセクション値\n --linux-shortcut\n アプリケーションのショートカットを作成します。\n MSG_Help_mac_linux_install_dir=アプリケーションのインストール・ディレクトリの絶対パス\n MSG_Help_default_install_dir=OS XまたはLinux上のアプリケーションのインストール・ディレクトリの絶対パス。\n "プログラム・ファイル"や"AppData"など、Windows上のアプリケーションの\n インストール場所の相対サブパス。\n diff --git a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_zh_CN.properties b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_zh_CN.properties index 0b4889199a4..482381dd624 100644 --- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_zh_CN.properties +++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2017, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -33,7 +33,7 @@ MSG_Help_win_launcher=\n用来创建应用程序启动程序的与平台相关 MSG_Help_win_install=\ --win-dir-chooser\n 添加一个对话框以允许用户选择\n 产品的安装目录。\n --win-help-url \n 用户可以从中获取更多信息或技术支持的 URL\n --win-menu\n 请求为此应用程序添加开始菜单快捷方式\n --win-menu-group \n 此应用程序所在的开始菜单组\n --win-per-user-install\n 请求基于每个用户执行安装\n --win-shortcut\n 请求为此应用程序添加桌面快捷方式\n --win-shortcut-prompt\n 添加一个对话框以允许用户选择是否将由安装程序\n 创建快捷方式。\n --win-update-url \n 可用应用程序更新信息的 URL\n --win-upgrade-uuid \n 与此程序包的升级相关联的 UUID\n MSG_Help_win_install_dir=默认安装位置下面的相对子路径\n MSG_Help_mac_install=\ --mac-dmg-content [,...]\n 包括 DMG 中引用的所有内容。\n 此选项可以使用多次。\n -MSG_Help_mac_launcher=\ --mac-package-identifier \n 用来唯一地标识 macOS 应用程序的标识符\n 默认为主类名称。\n 只能使用字母数字 (A-Z,a-z,0-9)、连字符 (-) 和\n 句点 (.) 字符。\n --mac-package-name \n 出现在菜单栏中的应用程序名称\n 这可以与应用程序名称不同。\n 此名称的长度必须小于 16 个字符,适合\n 显示在菜单栏中和应用程序“信息”窗口中。\n 默认为应用程序名称。\n --mac-package-signing-prefix \n 在对应用程序包签名时,会在所有需要签名\n 但当前没有程序包标识符的组件的\n 前面加上此值。\n --mac-sign\n 请求对程序包或预定义的应用程序映像\n 进行签名。\n --mac-signing-keychain \n 要用来搜索签名身份的密钥链的名称\n 如果未指定,则使用标准的密钥链。\n --mac-signing-key-user-name \n Apple 签名身份的团队或用户名称部分。\n --mac-app-store\n 指示 jpackage 输出面向\n Mac App Store。\n --mac-entitlements \n 包含一些权利的文件的路径,在对捆绑包中的可执行文件\n 和库进行签名时会使用这些权利。\n --mac-app-category \n 用于构造应用程序 plist 中 LSApplicationCategoryType 的\n 字符串。默认值为 "utilities"。\n +MSG_Help_mac_launcher=\ --mac-package-identifier \n 用来唯一地标识 macOS 应用程序的标识符\n 默认为主类名称。\n 只能使用字母数字 (A-Z,a-z,0-9)、连字符 (-) 和\n 句点 (.) 字符。\n --mac-package-name \n 出现在菜单栏中的应用程序名称\n 这可以与应用程序名称不同。\n 此名称的长度必须小于 16 个字符,适合\n 显示在菜单栏中和应用程序“信息”窗口中。\n 默认为应用程序名称。\n --mac-package-signing-prefix \n 在对应用程序包签名时,会在所有需要签名\n 但当前没有程序包标识符的组件的\n 前面加上此值。\n --mac-sign\n 请求对程序包或预定义的应用程序映像\n 进行签名。\n --mac-signing-keychain \n 要用来搜索签名身份的密钥链的名称\n 如果未指定,则使用标准的密钥链。\n --mac-signing-key-user-name \n Apple 签名身份的团队或用户名称部分。为了直接\n 控制用于对应用程序映像或安装程序进行签名的\n 签名身份,请使用 --mac-app-image-sign-identity 和/或\n --mac-installer-sign-identity。此选项不能与\n --mac-app-image-sign-identity 或 --mac-installer-sign-identity 结合使用。\n --mac-app-image-sign-identity \n 用于对应用程序映像进行签名的身份。此值将直接\n 传递至 "codesign" 工具的 --sign 选项。此选项不能\n 与 --mac-signing-key-user-name 结合使用。\n --mac-installer-sign-identity \n 用于对 "pkg" 安装程序进行签名的身份。此值将直接\n 传递至 "productbuild" 工具的 --sign 选项。此选项不能\n 与 --mac-signing-key-user-name 结合使用。\n --mac-app-store\n 指示 jpackage 输出面向\n Mac App Store。\n --mac-entitlements \n 包含一些权利的文件的路径,在对捆绑包中的可执行文件\n 和库进行签名时会使用这些权利。\n --mac-app-category \n 用于构造应用程序 plist 中 LSApplicationCategoryType 的\n 字符串。默认值为 "utilities"。\n MSG_Help_linux_install=\ --linux-package-name \n Linux 程序包的名称,默认为应用程序名称\n --linux-deb-maintainer \n .deb 程序包的维护程序\n --linux-menu-group \n 此应用程序所在的菜单组\n --linux-package-deps\n 应用程序所需的程序包或功能\n --linux-rpm-license-type \n 许可证的类型(RPM .spec 的 "License: ")\n --linux-app-release \n RPM .spec 文件的发行版值或 \n DEB 控制文件的 Debian 修订版值\n --linux-app-category \n RPM .spec 文件的组值或 \n DEB 控制文件的节值\n --linux-shortcut\n 为应用程序创建快捷方式。\n MSG_Help_mac_linux_install_dir=应用程序安装目录的绝对路径\n MSG_Help_default_install_dir=OS X 或 Linux 上应用程序安装目录的绝对路径。\n Windows 上应用程序安装位置的相对子路径\n (如 "Program Files" 或 "AppData")。\n diff --git a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/MainResources_de.properties b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/MainResources_de.properties index e505262ea28..e50af2320ce 100644 --- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/MainResources_de.properties +++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/MainResources_de.properties @@ -91,11 +91,11 @@ ERR_NoMainClass=Fehler: Hauptanwendungsklasse fehlt ERR_UnsupportedOption=Fehler: Option [{0}] ist auf dieser Plattform ungültig ERR_InvalidTypeOption=Fehler: Option [{0}] ist nicht gültig mit Typ [{1}] ERR_NoInstallerEntryPoint=Fehler: Option [{0}] ist nicht gültig ohne Einstiegspunktoption --module oder --main-jar -ERR_MutuallyExclusiveOptions="Fehler: Optionen [{0}] und [{1}] schließen sich gegenseitig aus +ERR_MutuallyExclusiveOptions=Fehler: Optionen [{0}] und [{1}] schließen sich gegenseitig aus ERR_InvalidOptionWithAppImageSigning=Fehler: Option [{0}] ist nicht gültig beim Signieren eines Anwendungsimages ERR_MissingArgument=Fehler: Fehlendes Argument: {0} -ERR_MissingRequiredArgument=Error: {0} argument requires at least one of [{1}] argument(s) +ERR_MissingRequiredArgument=Fehler: Für das Argument {0} ist mindestens eines der folgenden Argumente erforderlich: [{1}] ERR_MissingAppResources=Fehler: Keine Anwendungs-JAR-Dateien gefunden ERR_AppImageNotExist=Fehler: Anwendungsimageverzeichnis "{0}" ist nicht vorhanden ERR_NoAddLauncherName=Fehler: Für Option --add-launcher müssen ein Name und ein Dateipfad angegeben werden (--add-launcher =) diff --git a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/MainResources_ja.properties b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/MainResources_ja.properties index 6cc9c23793c..c5f0dc328d2 100644 --- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/MainResources_ja.properties +++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/MainResources_ja.properties @@ -91,11 +91,11 @@ ERR_NoMainClass=エラー: メイン・アプリケーション・クラスが ERR_UnsupportedOption=エラー: オプション[{0}]は、このプラットフォームでは無効です ERR_InvalidTypeOption=エラー: オプション[{0}]は、タイプ[{1}]では無効です ERR_NoInstallerEntryPoint=エラー: オプション[{0}]は、--moduleまたは--main-jarエントリ・ポイント・オプションなしでは無効です -ERR_MutuallyExclusiveOptions="エラー: 相互排他的なオプション[{0}]と[{1}] +ERR_MutuallyExclusiveOptions=エラー: 相互排他的なオプション[{0}]と[{1}] ERR_InvalidOptionWithAppImageSigning=エラー: アプリケーション・イメージへの署名時にオプション[{0}]が有効ではありません ERR_MissingArgument=エラー: 引数がありません: {0} -ERR_MissingRequiredArgument=Error: {0} argument requires at least one of [{1}] argument(s) +ERR_MissingRequiredArgument=エラー: {0}引数には少なくとも1つの[{1}]引数が必要です ERR_MissingAppResources=エラー: アプリケーションjarが見つかりませんでした ERR_AppImageNotExist=エラー: アプリケーション・イメージ・ディレクトリ"{0}"は存在しません ERR_NoAddLauncherName=エラー: --add-launcherオプションには名前およびファイル・パスが必要です(--add-launcher =) diff --git a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/MainResources_zh_CN.properties b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/MainResources_zh_CN.properties index 7eab865568c..0d9c3b5a676 100644 --- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/MainResources_zh_CN.properties +++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/MainResources_zh_CN.properties @@ -91,11 +91,11 @@ ERR_NoMainClass=错误:缺少主应用程序类 ERR_UnsupportedOption=错误:选项 [{0}] 在此平台上无效 ERR_InvalidTypeOption=错误:选项 [{0}] 对于类型 [{1}] 无效 ERR_NoInstallerEntryPoint=错误:在没有 --module 或 --main-jar 入口点选项时,选项 [{0}] 无效 -ERR_MutuallyExclusiveOptions="错误:选项 [{0}] 和 [{1}] 相互排斥 +ERR_MutuallyExclusiveOptions=错误:选项 [{0}] 和 [{1}] 相互排斥 ERR_InvalidOptionWithAppImageSigning=错误:对应用程序映像签名时,选项 [{0}] 无效 ERR_MissingArgument=错误: 缺少参数: {0} -ERR_MissingRequiredArgument=Error: {0} argument requires at least one of [{1}] argument(s) +ERR_MissingRequiredArgument=错误:{0} 参数至少需要 [{1}] 参数之一 ERR_MissingAppResources=错误: 找不到应用程序 jar ERR_AppImageNotExist=错误:应用程序映像目录 "{0}" 不存在 ERR_NoAddLauncherName=错误:--add-launcher 选项需要一个名称和一个文件路径 (--add-launcher =) diff --git a/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_de.properties b/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_de.properties index 473dc5f0a98..6bdb9b06e09 100644 --- a/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_de.properties +++ b/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_de.properties @@ -53,7 +53,7 @@ error.version-swap=Versionsinformationen für {0} konnten nicht aktualisiert wer error.icon-swap=Symbol für {0} konnte nicht aktualisiert werden error.invalid-envvar=Ungültiger Wert der {0}-Umgebungsvariable error.lock-resource=Sperren nicht erfolgreich: {0} -error.unlock-resource=Failed to unlock: {0} +error.unlock-resource=Aufheben der Sperre nicht erfolgreich: {0} error.read-wix-l10n-file=Datei {0} konnte nicht geparst werden error.extract-culture-from-wix-l10n-file=Kulturwert konnte nicht aus Datei {0} gelesen werden diff --git a/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_ja.properties b/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_ja.properties index 7a6bcf40ef4..6a89e8cbf5a 100644 --- a/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_ja.properties +++ b/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_ja.properties @@ -53,7 +53,7 @@ error.version-swap={0}のバージョン情報の更新に失敗しました error.icon-swap={0}のアイコンの更新に失敗しました error.invalid-envvar={0}環境変数の値が無効です error.lock-resource=ロックに失敗しました: {0} -error.unlock-resource=Failed to unlock: {0} +error.unlock-resource=ロック解除に失敗しました: {0} error.read-wix-l10n-file={0}ファイルの解析に失敗しました error.extract-culture-from-wix-l10n-file={0}ファイルからのカルチャの値の読取りに失敗しました diff --git a/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_zh_CN.properties b/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_zh_CN.properties index 9b0809e0984..f786b00155d 100644 --- a/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_zh_CN.properties +++ b/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_zh_CN.properties @@ -53,7 +53,7 @@ error.version-swap=无法更新 {0} 的版本信息 error.icon-swap=无法更新 {0} 的图标 error.invalid-envvar={0} 环境变量的值无效 error.lock-resource=无法锁定:{0} -error.unlock-resource=Failed to unlock: {0} +error.unlock-resource=无法解锁:{0} error.read-wix-l10n-file=无法解析 {0} 文件 error.extract-culture-from-wix-l10n-file=无法从 {0} 文件读取文化值 diff --git a/test/hotspot/jtreg/compiler/arguments/TestC1Globals.java b/test/hotspot/jtreg/compiler/arguments/TestC1Globals.java index b8ed2c36918..ff639a69bd9 100644 --- a/test/hotspot/jtreg/compiler/arguments/TestC1Globals.java +++ b/test/hotspot/jtreg/compiler/arguments/TestC1Globals.java @@ -21,33 +21,13 @@ * questions. */ -/** - * @test - * @bug 8318817 - * @requires vm.debug - * @summary Test flag with large value - * - * @run main/othervm -XX:NMethodSizeLimit=351658240 - * compiler.arguments.TestC1Globals - */ - -/** - * @test - * @bug 8318817 - * @requires vm.debug - * @summary Test flag with large value - * - * @run main/othervm -XX:NMethodSizeLimit=224001703 - * compiler.arguments.TestC1Globals - */ - /** * @test * @bug 8316653 * @requires vm.debug - * @summary Test flag with max value + * @summary Test flag with max value. * - * @run main/othervm -XX:NMethodSizeLimit=2147483647 + * @run main/othervm -XX:NMethodSizeLimit=1M * compiler.arguments.TestC1Globals */ @@ -56,25 +36,23 @@ * @bug 8318817 * @requires vm.debug * @requires os.family == "linux" - * @summary Test flag with large value combined with transparent huge pages on + * @summary Test flag with max value combined with transparent huge pages on * Linux. * - * @run main/othervm -XX:NMethodSizeLimit=351658240 + * @run main/othervm -XX:NMethodSizeLimit=1M * -XX:+UseTransparentHugePages * compiler.arguments.TestC1Globals - * */ /** * @test - * @bug 8318817 + * @bug 8320682 * @requires vm.debug - * @requires os.family == "linux" - * @summary Test flag with large value combined with transparent huge pages on - * Linux. + * @summary Test flag with max value and specific compilation. * - * @run main/othervm -XX:NMethodSizeLimit=224001703 - * -XX:+UseTransparentHugePages + * @run main/othervm -XX:NMethodSizeLimit=1M + * -XX:CompileOnly=java.util.HashMap::putMapEntries + * -Xcomp * compiler.arguments.TestC1Globals * */ diff --git a/test/hotspot/jtreg/compiler/c2/TestUninitializedKlassField.java b/test/hotspot/jtreg/compiler/c2/TestUninitializedKlassField.java new file mode 100644 index 00000000000..3bad2bde7b1 --- /dev/null +++ b/test/hotspot/jtreg/compiler/c2/TestUninitializedKlassField.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8321974 + * @summary Test that the TypeAryPtr::_klass field is properly initialized on use. + * @comment This test only reproduces the issue with release builds of the JVM because + * verification code in debug builds leads to eager initialization of the field. + * @run main/othervm -Xbatch -XX:CompileCommand=compileonly,TestUninitializedKlassField::test* + * -XX:-TieredCompilation TestUninitializedKlassField + */ + +public class TestUninitializedKlassField { + static void test(long array2[]) { + long array1[] = new long[1]; + // Loop is needed to create a backedge phi that is processed only during IGVN. + for (int i = 0; i < 1; i++) { + // CmpPNode::sub will check if classes of array1 and array2 are unrelated + // and the subtype checks will crash if the _klass field is not initialized. + if (array2 != array1) { + array1 = new long[2]; + } + } + } + + public static void main(String[] args) { + for (int i = 0; i < 50_000; ++i) { + test(null); + } + } +} diff --git a/test/hotspot/jtreg/serviceability/dcmd/gc/HeapDumpParallelTest.java b/test/hotspot/jtreg/serviceability/dcmd/gc/HeapDumpParallelTest.java index 2ea09dd1597..0010c5bdd78 100644 --- a/test/hotspot/jtreg/serviceability/dcmd/gc/HeapDumpParallelTest.java +++ b/test/hotspot/jtreg/serviceability/dcmd/gc/HeapDumpParallelTest.java @@ -66,7 +66,6 @@ private static void checkAndVerify(OutputAnalyzer dcmdOut, LingeredApp app, File appOut.shouldContain("Merge heap files complete"); } else { appOut.shouldNotContain("Dump heap objects in parallel"); - appOut.shouldNotContain("Merge heap files complete"); } HprofParser.parseAndVerify(heapDumpFile); diff --git a/test/hotspot/jtreg/serviceability/jvmti/vthread/HeapDump/VThreadInHeapDump.java b/test/hotspot/jtreg/serviceability/jvmti/vthread/HeapDump/VThreadInHeapDump.java index 89a9a0514bf..7fe5abb800f 100644 --- a/test/hotspot/jtreg/serviceability/jvmti/vthread/HeapDump/VThreadInHeapDump.java +++ b/test/hotspot/jtreg/serviceability/jvmti/vthread/HeapDump/VThreadInHeapDump.java @@ -183,6 +183,7 @@ private static void createDump(File dumpFile, String[] extraOptions) throws Exce List extraVMArgs = new ArrayList<>(); extraVMArgs.add("-Djdk.virtualThreadScheduler.parallelism=1"); + extraVMArgs.add("-Xlog:heapdump"); extraVMArgs.addAll(Arrays.asList(extraOptions)); LingeredApp.startApp(theApp, extraVMArgs.toArray(new String[0])); @@ -252,8 +253,7 @@ private static void verifyDump(File dumpFile) throws Exception { // Verify objects from thread stacks are dumped. test(snapshot, VThreadInHeapDumpTarg.VThreadMountedReferenced.class); test(snapshot, VThreadInHeapDumpTarg.PThreadReferenced.class); - // Dumping of unmounted vthreads is not implemented yet - //test(snapshot, VThreadInHeapDumpTarg.VThreadUnmountedReferenced.class); + test(snapshot, VThreadInHeapDumpTarg.VThreadUnmountedReferenced.class); } } diff --git a/test/jdk/java/foreign/TestAddressDereference.java b/test/jdk/java/foreign/TestAddressDereference.java index 3ebec596263..54477bafe13 100644 --- a/test/jdk/java/foreign/TestAddressDereference.java +++ b/test/jdk/java/foreign/TestAddressDereference.java @@ -128,8 +128,8 @@ public void testNativeUpcallArgNeg(long alignment, ValueLayout layout) throws Th if (!badAlign) return; runInNewProcess(UpcallTestRunner.class, true, new String[] {Long.toString(alignment), layout.toString() }) - .assertFailed() - .assertStdErrContains("alignment constraint for address"); + .shouldNotHaveExitValue(0) + .stderrShouldContain("alignment constraint for address"); } public static class UpcallTestRunner { diff --git a/test/jdk/java/foreign/TestStubAllocFailure.java b/test/jdk/java/foreign/TestStubAllocFailure.java index d3a1ef6e3de..b20b3e88ea2 100644 --- a/test/jdk/java/foreign/TestStubAllocFailure.java +++ b/test/jdk/java/foreign/TestStubAllocFailure.java @@ -31,12 +31,15 @@ */ import java.lang.foreign.*; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; import java.io.IOException; import java.util.List; +import java.util.function.Consumer; +import java.util.stream.Stream; import org.testng.annotations.Test; -import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; public class TestStubAllocFailure extends UpcallTestHelper { @@ -44,18 +47,23 @@ public class TestStubAllocFailure extends UpcallTestHelper { @Test public void testUpcallAllocFailure() throws IOException, InterruptedException { runInNewProcess(UpcallRunner.class, true, List.of("-XX:ReservedCodeCacheSize=3M"), List.of()) - .assertSuccess(); + .shouldNotHaveExitValue(0) + .shouldNotHaveFatalError(); + } + + @Test + public void testUDowncallAllocFailure() throws IOException, InterruptedException { + runInNewProcess(DowncallRunner.class, true, List.of("-XX:ReservedCodeCacheSize=3M"), List.of()) + .shouldNotHaveExitValue(0) + .shouldNotHaveFatalError(); } public static class UpcallRunner extends NativeTestHelper { public static void main(String[] args) throws Throwable { - try (Arena arena = Arena.ofConfined()) { - while (true) { - // allocate stubs until we crash - upcallStub(UpcallRunner.class, "target", FunctionDescriptor.ofVoid(), arena); - } - } catch (OutOfMemoryError e) { - assertTrue(e.getMessage().contains("Failed to allocate upcall stub")); + FunctionDescriptor descriptor = FunctionDescriptor.ofVoid(); + MethodHandle target = MethodHandles.lookup().findStatic(UpcallRunner.class, "target", descriptor.toMethodType()); + while (true) { + LINKER.upcallStub(target, descriptor, Arena.ofAuto()); } } @@ -63,4 +71,25 @@ public static void target() { fail("Should not get here"); } } + + public static class DowncallRunner extends NativeTestHelper { + + private static final int MAX_ARITY = 5; + + private static void mapper(FunctionDescriptor fd, Consumer sink) { + for (MemoryLayout l : List.of(C_INT, C_LONG_LONG, C_DOUBLE, C_FLOAT, C_SHORT)) { + sink.accept(fd.appendArgumentLayouts(l)); + } + } + + public static void main(String[] args) throws Throwable { + Linker linker = Linker.nativeLinker(); + Stream stream = Stream.of(FunctionDescriptor.ofVoid()); + for (int i = 0; i < MAX_ARITY; i++) { + stream = stream.mapMulti(DowncallRunner::mapper); + } + + stream.forEach(linker::downcallHandle); + } + } } diff --git a/test/jdk/java/foreign/TestUpcallException.java b/test/jdk/java/foreign/TestUpcallException.java index f7dca7bc19c..beaa33f5e61 100644 --- a/test/jdk/java/foreign/TestUpcallException.java +++ b/test/jdk/java/foreign/TestUpcallException.java @@ -48,8 +48,8 @@ public class TestUpcallException extends UpcallTestHelper { @Test(dataProvider = "exceptionCases") public void testException(Class target, boolean useSpec) throws InterruptedException, IOException { runInNewProcess(target, useSpec) - .assertFailed() - .assertStdErrContains("Testing upcall exceptions"); + .shouldNotHaveExitValue(0) + .stderrShouldContain("Testing upcall exceptions"); } @DataProvider diff --git a/test/jdk/java/foreign/UpcallTestHelper.java b/test/jdk/java/foreign/UpcallTestHelper.java index e24c35e498c..bbc01959ccd 100644 --- a/test/jdk/java/foreign/UpcallTestHelper.java +++ b/test/jdk/java/foreign/UpcallTestHelper.java @@ -21,54 +21,24 @@ * questions. */ +import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; import jdk.test.lib.Utils; -import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotEquals; import static org.testng.Assert.assertTrue; public class UpcallTestHelper extends NativeTestHelper { - public record Output(int result, List stdout, List stderr) { - private static void assertContains(List lines, String shouldInclude, String name) { - assertTrue(lines.stream().anyMatch(line -> line.contains(shouldInclude)), - "Did not find '" + shouldInclude + "' in " + name); - } - public Output assertFailed() { - assertNotEquals(result, 0); - return this; - } - - public Output assertSuccess() { - assertEquals(result, 0); - return this; - } - - public Output assertStdErrContains(String shouldInclude) { - assertContains(stderr, shouldInclude, "stderr"); - return this; - } - - public Output assertStdOutContains(String shouldInclude) { - assertContains(stdout, shouldInclude, "stdout"); - return this; - } - } - - public Output runInNewProcess(Class target, boolean useSpec, String... programArgs) throws IOException, InterruptedException { + public OutputAnalyzer runInNewProcess(Class target, boolean useSpec, String... programArgs) throws IOException, InterruptedException { return runInNewProcess(target, useSpec, List.of(), List.of(programArgs)); } - public Output runInNewProcess(Class target, boolean useSpec, List vmArgs, List programArgs) throws IOException, InterruptedException { + public OutputAnalyzer runInNewProcess(Class target, boolean useSpec, List vmArgs, List programArgs) throws IOException, InterruptedException { assert !target.isArray(); List command = new ArrayList<>(List.of( @@ -86,17 +56,10 @@ public Output runInNewProcess(Class target, boolean useSpec, List vmA boolean completed = process.waitFor(timeOut, TimeUnit.MINUTES); assertTrue(completed, "Time out while waiting for process"); - List outLines = linesFromStream(process.getInputStream()); - outLines.forEach(System.out::println); - List errLines = linesFromStream(process.getErrorStream()); - errLines.forEach(System.err::println); - - return new Output(process.exitValue(), outLines, errLines); - } + OutputAnalyzer output = new OutputAnalyzer(process); + output.outputTo(System.out); + output.errorTo(System.err); - private static List linesFromStream(InputStream stream) throws IOException { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(stream))) { - return reader.lines().toList(); - } + return output; } } diff --git a/test/jdk/java/foreign/critical/TestCriticalUpcall.java b/test/jdk/java/foreign/critical/TestCriticalUpcall.java index c2f2d5572c1..862c008b080 100644 --- a/test/jdk/java/foreign/critical/TestCriticalUpcall.java +++ b/test/jdk/java/foreign/critical/TestCriticalUpcall.java @@ -43,7 +43,9 @@ public class TestCriticalUpcall extends UpcallTestHelper { @Test public void testUpcallFailure() throws IOException, InterruptedException { // test to see if we catch a trivial downcall doing an upcall - runInNewProcess(Runner.class, true).assertFailed().assertStdOutContains("wrong thread state for upcall"); + runInNewProcess(Runner.class, true) + .shouldNotHaveExitValue(0) + .stdoutShouldContain("wrong thread state for upcall"); } public static class Runner extends NativeTestHelper { diff --git a/test/jdk/java/foreign/passheapsegment/TestPassHeapSegment.java b/test/jdk/java/foreign/passheapsegment/TestPassHeapSegment.java index 5f97dbf288d..fadcdf1ba24 100644 --- a/test/jdk/java/foreign/passheapsegment/TestPassHeapSegment.java +++ b/test/jdk/java/foreign/passheapsegment/TestPassHeapSegment.java @@ -53,7 +53,9 @@ public void testNoHeapArgs() throws Throwable { @Test(dataProvider = "specs") public void testNoHeapReturns(boolean spec) throws IOException, InterruptedException { - runInNewProcess(Runner.class, spec).assertFailed().assertStdErrContains("Heap segment not allowed"); + runInNewProcess(Runner.class, spec) + .shouldNotHaveExitValue(0) + .stderrShouldContain("Heap segment not allowed"); } public static class Runner { diff --git a/test/jdk/java/lang/String/Chars.java b/test/jdk/java/lang/String/Chars.java index 20cde9d003d..035a7a9de27 100644 --- a/test/jdk/java/lang/String/Chars.java +++ b/test/jdk/java/lang/String/Chars.java @@ -23,8 +23,10 @@ /* * @test - * @bug 8054307 8311906 + * @bug 8054307 8311906 8321514 * @summary test String chars() and codePoints() + * @run main/othervm -XX:+CompactStrings Chars + * @run main/othervm -XX:-CompactStrings Chars */ import java.util.Arrays; @@ -45,6 +47,7 @@ public static void main(String[] args) { } testChars(cc, ccExp); testCharsSubrange(cc, ccExp); + testIntsSubrange(ccExp); testCPs(cc, cpExp); // bmp without surrogates @@ -72,6 +75,7 @@ public static void main(String[] args) { cpExp = Arrays.copyOf(cpExp, k); testChars(cc, ccExp); testCharsSubrange(cc, ccExp); + testIntsSubrange(ccExp); testCPs(cc, cpExp); } } @@ -104,6 +108,27 @@ static void testCharsSubrange(char[] cc, int[] expected) { } } + static void testIntsSubrange(int[] expected) { + int[] offsets = { 7, 31 }; // offsets to test + int LENGTH = 13; + for (int i = 0; i < offsets.length; i++) { + int offset = Math.max(0, offsets[i]); // confine to the input array + int count = Math.min(LENGTH, expected.length - offset); + String str = new String(expected, offset, count); + int[] actual = str.chars().toArray(); + int errOffset = Arrays.mismatch(actual, 0, actual.length, + expected, offset, offset + count); + if (errOffset >= 0) { + System.err.printf("expected[%d] (%d) != actual[%d] (%d)%n", + offset + errOffset, expected[offset + errOffset], + errOffset, actual[errOffset]); + System.err.println("expected: " + Arrays.toString(expected)); + System.err.println("actual: " + Arrays.toString(actual)); + throw new RuntimeException("testIntsSubrange failed!"); + } + } + } + static void testCPs(char[] cc, int[] expected) { String str = new String(cc); if (!Arrays.equals(expected, str.codePoints().toArray())) { diff --git a/test/lib/jdk/test/lib/process/OutputAnalyzer.java b/test/lib/jdk/test/lib/process/OutputAnalyzer.java index ae04d9d1bc4..e316248fe8e 100644 --- a/test/lib/jdk/test/lib/process/OutputAnalyzer.java +++ b/test/lib/jdk/test/lib/process/OutputAnalyzer.java @@ -42,6 +42,8 @@ public final class OutputAnalyzer { private static final String deprecatedmsg = ".* VM warning:.* deprecated.*"; + private static final String FATAL_ERROR_PAT = "# A fatal error has been detected.*"; + private final OutputBuffer buffer; /** * Create an OutputAnalyzer, a utility class for verifying output and exit @@ -862,4 +864,11 @@ public void shouldContainMultiLinePattern(String... needles) { shouldContainMultiLinePattern(needles, true); } + /** + * Assert that we did not crash with a hard VM error (generating an hs_err_pidXXX.log) + */ + public void shouldNotHaveFatalError() { + shouldNotMatch(FATAL_ERROR_PAT); + } + }