คำถามติดแท็ก java-9

ใช้แท็กนี้สำหรับคำถามเฉพาะสำหรับ Java 9 ซึ่งเป็นเวอร์ชัน 9 ของแพลตฟอร์ม Java ซึ่งเผยแพร่ในวันที่ 21 กันยายน 2017 ในกรณีส่วนใหญ่คุณควรระบุแท็ก java ด้วย

30
วิธีแก้ไข java.lang.NoClassDefFoundError: javax / xml / bind / JAXBException ใน Java 9
ฉันมีรหัสบางส่วนที่ใช้คลาส JAXB API ซึ่งได้รับการจัดให้เป็นส่วนหนึ่งของ JDK ใน Java 6/7/8 เมื่อฉันเรียกใช้รหัสเดียวกันกับ Java 9 ที่รันไทม์ฉันได้รับข้อผิดพลาดที่ระบุว่าไม่พบคลาส JAXB คลาส JAXB ได้รับการจัดให้เป็นส่วนหนึ่งของ JDK ตั้งแต่ Java 6 ดังนั้นทำไม Java 9 จึงไม่พบคลาสเหล่านี้อีกต่อไป
845 java  jaxb  java-9  java-11  java-10 

1
ทำไมอาร์เรย์ [idx ++] + =“ a” เพิ่ม idx หนึ่งครั้งใน Java 8 แต่เพิ่มเป็นสองเท่าใน Java 9 และ 10
สำหรับความท้าทายนักกอล์ฟรหัสเพื่อน เขียนรหัสต่อไปนี้ : import java.util.*; public class Main { public static void main(String[] args) { int size = 3; String[] array = new String[size]; Arrays.fill(array, ""); for(int i = 0; i <= 100; ) { array[i++%size] += i + " "; } for(String element: array) { System.out.println(element); } } } …
751 java  java-8  javac  java-9  java-10 

8
การแทนที่โมดูล JPMS ที่เลิกใช้แล้วด้วย Java EE API
Java 9 คัดค้านหกโมดูลที่มี Java EE APIsและกำลังจะถูกลบในไม่ช้า: java.activati ​​onกับjavax.activationแพ็คเกจ java.corbaกับjavax.activity, javax.rmi, javax.rmi.CORBAและorg.omg.*แพคเกจ java.transactionกับjavax.transactionแพคเกจ java.xml.bindกับjavax.xml.bind.*แพ็คเกจทั้งหมด java.xml.wsกับjavax.jws, javax.jws.soap, javax.xml.soapและทุกjavax.xml.ws.*แพคเกจ java.xml.ws.annotationพร้อมjavax.annotationแพ็กเกจ สิ่งใดที่รักษาไว้ซึ่งสิ่งประดิษฐ์ของบุคคลที่สามนั้นมี API เหล่านั้น ไม่สำคัญว่าพวกเขาจะให้ API เหล่านั้นได้ดีเพียงใดหรือคุณสมบัติอื่น ๆ ที่พวกเขามีให้ - สิ่งที่สำคัญคือพวกเขาจะสามารถแทนที่ Drop-in สำหรับโมดูล / แพ็คเกจเหล่านี้ได้หรือไม่? เพื่อให้ง่ายต่อการรวบรวมความรู้ฉันได้ตอบกับสิ่งที่ฉันรู้จนถึงตอนนี้และทำให้คำตอบเป็นวิกิชุมชน ฉันหวังว่าผู้คนจะขยายออกไปแทนที่จะเขียนคำตอบของตัวเอง ก่อนที่คุณจะลงคะแนนให้ปิด: ใช่มีบางคำถามในแต่ละโมดูลและคำตอบสำหรับคำถามนี้แน่นอนว่าข้อมูลนั้นซ้ำกัน แต่ AFAIK ไม่มีจุดเดียวที่จะเรียนรู้เกี่ยวกับสิ่งเหล่านี้ทั้งหมดซึ่งฉันคิดว่ามีค่ามาก คำถามที่ขอคำแนะนำจากห้องสมุดมักจะถูกพิจารณาว่าเป็นหัวข้อนอกเรื่องเพราะ "พวกเขามักจะดึงดูดคำตอบและสแปมที่มีความคิดเห็น" แต่ฉันไม่คิดว่ามันจะใช้กับที่นี่ ชุดของไลบรารีที่ถูกต้องได้รับการอธิบายอย่างชัดเจน: พวกเขาจะต้องใช้มาตรฐานเฉพาะ นอกเหนือจากนั้นไม่มีอะไรสำคัญดังนั้นฉันจึงไม่เห็นความเสี่ยงต่อความคิดเห็นและสแปม

23
ไม่สามารถติดตั้ง android-sdk:“ java.lang.NoClassDefFoundError: javax / xml / bind / annotation / XmlSchema”
เมื่อติดตั้งเครื่องมือ android sdk ข้อผิดพลาดต่อไปนี้จะถูกปล่อยออกมา: java.lang.NoClassDefFoundError: javax / xml / bind / คำอธิบายประกอบ / XmlSchema ทำไมสิ่งนี้จึงเกิดขึ้นและจะแก้ไขได้อย่างไร? ดีบักเอาต์พุต: $ java --version java 9 Java(TM) SE Runtime Environment (build 9+181) Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode) $ brew cask install android-sdk ==> Caveats We will install android-sdk-tools, platform-tools, and build-tools …
167 java  android  java-9 

5
Observer เลิกใช้งานใน Java 9 แล้วเราควรใช้อะไรแทน?
Java 9 ออกมาแล้วและObserverเลิกใช้งานแล้ว ทำไมถึงเป็นเช่นนั้น? หมายความว่าเราไม่ควรใช้รูปแบบผู้สังเกตการณ์อีกต่อไปหรือไม่? มันจะดีถ้ารู้ว่าอะไรเป็นทางเลือกที่ดีกว่า?

6
ทางเลือก orElse ทางเลือกใน Java
ฉันได้ทำงานกับประเภทตัวเลือกใหม่ใน Java 8และฉันได้พบกับสิ่งที่ดูเหมือนเป็นการดำเนินการทั่วไปที่ไม่รองรับฟังก์ชัน: an "orElseOptional" พิจารณารูปแบบต่อไปนี้: Optional<Result> resultFromServiceA = serviceA(args); if (resultFromServiceA.isPresent) return result; else { Optional<Result> resultFromServiceB = serviceB(args); if (resultFromServiceB.isPresent) return resultFromServiceB; else return serviceC(args); } รูปแบบนี้มีหลายรูปแบบ แต่ต้องการให้ "orElse" เป็นทางเลือกที่ใช้ฟังก์ชันสร้างทางเลือกใหม่ซึ่งเรียกว่าเมื่อไม่มีรูปแบบปัจจุบันเท่านั้น การใช้งานจะมีลักษณะดังนี้: public Optional<T> orElse(Supplier<Optional<? extends T>> otherSupplier) { return value != null ? this : other.get(); } ฉันอยากรู้ว่ามีเหตุผลที่วิธีการดังกล่าวไม่มีอยู่จริงหรือไม่ถ้าฉันแค่ใช้ตัวเลือกเสริมโดยไม่ได้ตั้งใจและวิธีอื่น …
138 java  lambda  java-8  optional  java-9 

4
การเข้าถึงแบบสะท้อนแสงที่ผิดกฎหมายคืออะไร
มีคำถามมากมายเกี่ยวกับการเข้าถึงแบบสะท้อนแสงที่ผิดกฎหมายใน Java 9 ตอนนี้สิ่งที่ฉันไม่สามารถหาได้เนื่องจาก Google ที่แพร่กระจายออกไปคือผู้คนที่พยายามแก้ไขข้อความแสดงข้อผิดพลาดนั่นคือสิ่งที่การเข้าถึงแบบสะท้อนแสงที่ผิดกฎหมายเป็นจริง ดังนั้นคำถามของฉันค่อนข้างง่ายคือ: อะไรกำหนดการเข้าถึงแบบสะท้อนแสงที่ผิดกฎหมายและสถานการณ์ใดที่ทำให้เกิดคำเตือน ฉันได้รวบรวมแล้วว่ามันมีส่วนเกี่ยวข้องกับหลักการห่อหุ้มที่นำมาใช้ใน Java 9 แต่มันรวมเข้าด้วยกันอย่างไรและสิ่งที่ทำให้เกิดคำเตือนในสถานการณ์ที่ฉันไม่สามารถหาคำอธิบายได้
128 java  java-9  java-module 

4
อะไรคือความแตกต่างระหว่าง List.of และ Arrays.asList?
Java 9 แนะนำวิธีการโรงงานใหม่สำหรับรายการList.of: List<String> strings = List.of("first", "second"); ตัวเลือกก่อนหน้าและตัวเลือกใหม่แตกต่างกันอย่างไร นั่นคือความแตกต่างระหว่างสิ่งนี้คืออะไร: Arrays.asList(1, 2, 3); และนี่: List.of(1, 2, 3);
117 java  list  java-9 

3
การต่อสตริงถูกนำไปใช้ใน Java 9 อย่างไร?
ตามที่เขียนไว้ในJEP 280: Indify String Concatenation : เปลี่ยนStringลำดับไบต์โค้ด -concatenation แบบคงที่ที่สร้างขึ้นโดยjavacใช้การinvokedynamicเรียกไปยังฟังก์ชันไลบรารี JDK สิ่งนี้จะเปิดใช้งานการเพิ่มประสิทธิภาพของการStringเรียงต่อกันในอนาคตโดยไม่ต้องมีการเปลี่ยนแปลงเพิ่มเติมกับ bytecode ที่ปล่อยjavacออกมา ที่นี่ฉันต้องการทำความเข้าใจว่าการใช้การinvokedynamicโทรคืออะไรและการเชื่อมต่อ bytecode แตกต่างจากinvokedynamicอย่างไร

24
ไม่สามารถเรียกใช้ sdkmanager --list ด้วย Java 9
ฉันดาวน์โหลดและติดตั้ง: JDK ( jdk-9.0.1_osx-x64_bin.dmg) จาก Oracle ที่นี่ Android SDK ( sdk-tools-darwin-3859397.zip) จาก Google ที่นี่ หลังจากกำหนดค่าPATHตัวแปรแล้วฉันได้ลองรันsdkmanagerซึ่งแทนที่androidคำสั่งสำหรับจัดการส่วนประกอบ SDK อย่างไรก็ตามมันล้มเหลวดังที่แสดงไว้ที่นี่: $ sdkmanager --list Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156) at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75) at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81) at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:117) at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:93) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) ... 5 more นี่คือเวอร์ชัน …

30
Eclipse ไม่พบการทดสอบโดยใช้ JUnit 5 ที่เกิดจาก NoClassDefFoundError สำหรับ LauncherFactory
ปัญหา เมื่อใดก็ตามที่ฉันรันการทดสอบ JUnit โปรเจ็กต์ของฉัน (โดยใช้ JUnit 5 กับ Java 9 และ Eclipse Oxygen 1.a) ฉันพบปัญหาว่าคราสไม่พบการทดสอบใด ๆ คำอธิบาย ภายใต้คอนฟิกูเรชันการรัน eclipse ไม่พบเมธอดที่ใส่คำอธิบายประกอบด้วย @Test แต่จะแสดงให้ฉันเห็น " (ทุกวิธี) " แทน ภาพต่อไปนี้หวังว่าจะช่วยให้การตั้งค่าของฉันดีขึ้น: เอาต์พุตคอนโซล: java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source) at java.base/java.lang.Class.newInstance(Unknown Source) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368) at …
95 java  eclipse  junit  java-9  junit5 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.