คำถามติดแท็ก classpath

ใน Java classpath จะบอก Java Virtual Machine ว่าจะค้นหาคลาสและแพ็กเกจที่ผู้ใช้กำหนดเองเมื่อรันโปรแกรม Java classpath เป็นพารามิเตอร์และสามารถตั้งค่าได้บนบรรทัดคำสั่งหรือผ่านตัวแปรสภาพแวดล้อม

25
การรวมไหทั้งหมดในไดเร็กทอรีภายใน Java classpath
มีวิธีรวมไฟล์ jar ทั้งหมดในไดเร็กทอรีใน classpath หรือไม่? ฉันพยายามjava -classpath lib/*.jar:. my.package.Programแล้วและไม่สามารถหาไฟล์คลาสที่อยู่ในไหเหล่านั้นได้ ฉันต้องเพิ่มไฟล์ jar แต่ละไฟล์ใน classpath แยกกันหรือไม่?

15
สาเหตุและความแตกต่างระหว่าง NoClassDefFoundError และ ClassNotFoundException คืออะไร
ความแตกต่างระหว่างNoClassDefFoundErrorและClassNotFoundExceptionคืออะไร? อะไรทำให้พวกเขาถูกโยนทิ้ง? พวกเขาจะแก้ไขได้อย่างไร? ฉันมักจะพบข้อผิดพลาดเหล่านี้เมื่อแก้ไขรหัสที่มีอยู่เพื่อรวมไฟล์ jar ใหม่ ฉันได้กดพวกเขาทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์สำหรับแอป java ที่แจกจ่ายผ่านเว็บสตาร์ต เหตุผลที่เป็นไปได้ที่ฉันเจอ: แพ็คเกจไม่รวมอยู่ในbuild.xmlรหัสฝั่งไคลเอ็นต์ classpath รันไทม์ที่ขาดหายไปสำหรับไหใหม่ที่เราใช้อยู่ เวอร์ชันขัดแย้งกับ jar ก่อนหน้า เมื่อฉันพบสิ่งเหล่านี้ในวันนี้ฉันใช้วิธีการตามรอยและคลาดเคลื่อนเพื่อให้สิ่งต่าง ๆ ทำงานได้ ฉันต้องการความชัดเจนและความเข้าใจมากขึ้น

18
วิธีอ่านไฟล์ข้อความจาก classpath ใน Java อย่างแท้จริง
ฉันพยายามอ่านไฟล์ข้อความซึ่งตั้งอยู่ในตัวแปรระบบ CLASSPATH ไม่ใช่ตัวแปรผู้ใช้ ฉันพยายามรับอินพุตสตรีมไปยังไฟล์ดังนี้: วางไดเรกทอรีของไฟล์ ( D:\myDir) ใน CLASSPATH แล้วลองด้านล่าง: InputStream in = this.getClass().getClassLoader().getResourceAsStream("SomeTextFile.txt"); InputStream in = this.getClass().getClassLoader().getResourceAsStream("/SomeTextFile.txt"); InputStream in = this.getClass().getClassLoader().getResourceAsStream("//SomeTextFile.txt"); วางเส้นทางแบบเต็มของไฟล์ ( D:\myDir\SomeTextFile.txt) ใน CLASSPATH แล้วลองใช้รหัสด้านบน 3 บรรทัด แต่น่าเสียดายที่ไม่มีของพวกเขากำลังทำงานและฉันมักจะได้รับการnullเข้า inInputStream
366 java  classpath 

9
classpath คืออะไรและฉันจะตั้งได้อย่างไร
ฉันแค่อ่านบรรทัดนี้: สิ่งแรกที่รูปแบบ () วิธีการคือโหลดเทมเพลต Velocity จาก classpath ที่ชื่อว่า output.vm โปรดอธิบายความหมายของ classpath ในบริบทนี้และฉันควรกำหนด classpath อย่างไร

14
รับรายการทรัพยากรจากไดเรกทอรี classpath
ฉันกำลังมองหาวิธีการที่จะได้รับรายชื่อทรัพยากรทั้งหมดจากไดเรกทอรี classpath List<String> getResourceNames (String directoryName)ที่กำหนดสิ่งที่ต้องการวิธีการที่ ตัวอย่างเช่นกำหนด classpath ไดเรกทอรีx/y/zที่มีไฟล์a.html, b.html, c.htmlและไดเรกทอรีย่อยd,getResourceNames("x/y/z")ควรกลับมีสายต่อไปนี้:List<String>['a.html', 'b.html', 'c.html', 'd'] มันควรทำงานทั้งสองอย่างสำหรับทรัพยากรในระบบไฟล์และไห ฉันรู้ว่าฉันสามารถเขียนตัวอย่างสั้น ๆ ด้วยFiles, JarFiles และURLs แต่ฉันไม่ต้องการที่จะบูรณาการล้อ คำถามของฉันคือเมื่อมีห้องสมุดสาธารณะที่มีอยู่แล้ววิธีที่เร็วที่สุดที่จะใช้getResourceNamesคืออะไร กองสปริงและ Apache Commons สามารถทำได้ทั้งคู่

6
วัตถุประสงค์ของ buildscript block ใน Gradle
ฉันใหม่กับ Gradle และฉันกำลังอ่านเอกสาร แต่ฉันไม่เข้าใจบางส่วนของมัน หนึ่งในส่วนเหล่านี้เชื่อมต่อกับbuildscriptบล็อก จุดประสงค์ของมันคืออะไร? หากสคริปต์การสร้างของคุณจำเป็นต้องใช้ไลบรารีภายนอกคุณสามารถเพิ่มพวกเขาไปยัง classpath ของสคริปต์ในสคริปต์การสร้างตัวเอง คุณทำสิ่งนี้โดยใช้วิธี buildscript () ผ่านการปิดซึ่งประกาศ classpath สคริปต์สร้าง buildscript { repositories { mavenCentral() } dependencies { classpath group: 'commons-codec', name: 'commons-codec', version: '1.2' } } ตกลง แต่สิ่งที่แตกต่างคือ: repositories { mavenCentral() } dependencies { compile group: 'commons-codec', name: 'commons-codec', version: '1.2' } ยกตัวอย่างเช่นว่าทำไมมันเป็นสิ่งจำเป็นที่จะใช้งานbuildscript?
235 classpath  gradle 

7
วิธีเพิ่มไดเรกทอรีไปยัง classpath ในแอปพลิเคชันที่เรียกใช้โปรไฟล์ใน IntelliJ IDEA ได้อย่างไร
ฉันกำลังพยายามเพิ่มไดเรกทอรีไปยังคลาสพา ธ ของโปรไฟล์เรียกใช้แอปพลิเคชัน ถ้าฉันแทนที่โดยใช้ -cp x: target / classes ในการตั้งค่า VM ฉันได้รับข้อผิดพลาดต่อไปนี้: java.lang.NoClassDefFoundError: com/intellij/rt/execution/application/AppMain แนวคิดใด ๆ เกี่ยวกับวิธีเพิ่มไดเรกทอรีไปยัง classpath สำหรับโครงการของฉัน

11
ค้นหาตำแหน่งที่โหลดคลาส java
ไม่มีใครรู้วิธีการหาโปรแกรมโดยที่ java classloader จริงโหลดคลาสจาก? ฉันมักจะทำงานในโครงการขนาดใหญ่ที่ classpath ใช้เวลานานและการค้นหาด้วยตนเองไม่ใช่ตัวเลือกจริงๆ ฉันเพิ่งมีปัญหาที่ classloader กำลังโหลดรุ่นที่ไม่ถูกต้องของชั้นเพราะมันอยู่ใน classpath ในสองสถานที่ที่แตกต่างกัน ดังนั้นฉันจะรับ classloader เพื่อบอกฉันว่าอยู่ที่ไหนบนดิสก์ไฟล์คลาสจริงมาจากไหน แก้ไข:จะเกิดอะไรขึ้นถ้า classloader ไม่สามารถโหลดคลาสได้เนื่องจากมีเวอร์ชันที่ไม่ตรงกัน (หรืออย่างอื่น) มีอยู่หรือไม่เราสามารถค้นหาไฟล์ที่พยายามอ่านก่อนที่จะอ่านได้หรือไม่

4
ความแตกต่างของคำนำหน้า classpath ฤดูใบไม้ผลิ
เอกสารที่นี่มันระบุ คำนำหน้าพิเศษนี้ระบุว่าทรัพยากร classpath ทั้งหมดที่ตรงกับชื่อที่กำหนดจะต้องได้รับ (ภายในสิ่งนี้เกิดขึ้นเป็นหลักผ่านการเรียก ClassLoader.getResources (... )) จากนั้นผสานเพื่อสร้างนิยามบริบทของแอปพลิเคชันสุดท้าย มีคนอธิบายเรื่องนี้ได้ไหม อะไรคือความแตกต่างระหว่างการใช้classpath*:conf/appContext.xmlเมื่อเทียบกับที่classpath:conf/appContext.xmlไม่มีเครื่องหมายดอกจัน
141 java  spring  classpath 


29
Intellij ไม่สามารถแก้ไขสัญลักษณ์เมื่อนำเข้า
ปัญหานี้เกิดขึ้นเป็นระยะ ๆ สำหรับไลบรารีและโครงการต่างๆ เมื่อพยายามนำเข้าไลบรารีแพ็กเกจจะได้รับการจดจำ แต่ไม่สามารถแก้ไขชื่อคลาสได้ ถ้าในคำสั่งการนำเข้าฉันright-click -> Goto -> the package's declarationฉันเห็นคลาสที่แยกย่อยทั้งหมดแสดงในบานหน้าต่างด้านข้าง - รวมถึงคลาสที่ฉันต้องการ - ถ้าฉันพยายามเติมคำสั่งนำเข้าโดยอัตโนมัติฉันสังเกตเห็นว่าคลาสที่ฉันต้องการไม่มีอยู่ใน หล่นลง. ฉันพยายามทำให้แคชไม่ถูกต้องแล้วไม่ได้ผล ฉันไม่พบข้อขัดแย้งของคลาสใด ๆ - ไม่มีไฟล์ jar อื่นใน classpath ของฉันที่มีชื่อแพ็กเกจเดียวกัน ฉันสามารถนำเข้าคลาสนี้ไปยังโปรเจ็กต์อื่นได้ โปรดดูภาพหน้าจอ: ใครมีเบาะแส?


10
เพิ่มไฟล์คุณสมบัติไปยัง classpath ของ IntelliJ
ฉันใช้โปรแกรม Java อย่างง่ายจาก IntelliJ IDE โดยใช้เมนู Run-> Run มันทำงานได้ดี ตอนนี้ฉันต้องการเพิ่มการบันทึก log4j ฉันเพิ่มโฟลเดอร์ทรัพยากรภายใต้รูทโปรเจ็กต์ของฉัน ฉันเพิ่มไฟล์ log4j.properties ในโฟลเดอร์นั้น ฉันเปลี่ยนรหัสเพื่อบันทึกบางอย่าง อะไรคือวิธีที่ถูกต้องในการบอกให้ IntelliJ รวมโฟลเดอร์ทรัพยากรใน classpath เพื่อให้เห็นไฟล์คุณสมบัติ ด้วย IntelliJ 8 ฉันเดาได้ว่าเหมือนลิงเมาและในที่สุดก็ใช้งานได้ ตอนนี้ฉันมี 9 คนแล้วและฉันไม่ประสบความสำเร็จเลย ฉันพยายามมาหนึ่งชั่วโมงแล้ว แล้วตัวเลือก "Add to classpath" บางที่ล่ะ / fume / vent / พร่ำเพ้อ

5
Java, Classpath, Classloading => หลายเวอร์ชันของ jar / project เดียวกัน
ฉันรู้ว่านี่อาจเป็นคำถามโง่ ๆ สำหรับนักเขียนโค้ดที่มีประสบการณ์ แต่ฉันมีไลบรารี (ไคลเอนต์ http) ที่เฟรมเวิร์ก / ไหอื่น ๆ ที่ใช้ในโครงการของฉันต้องการ แต่ทั้งหมดนั้นต้องการเวอร์ชันหลักที่แตกต่างกันเช่น: httpclient-v1.jar => Required by cralwer.jar httpclient-v2.jar => Required by restapi.jar httpclient-v3.jar => required by foobar.jar classloader ฉลาดพอที่จะแยกพวกมันออกหรือไม่? เป็นไปได้มากที่สุด? Classloader จัดการกับสิ่งนี้อย่างไรในกรณีที่ Class เหมือนกันในทั้งสามขวด โหลดอันไหนและเพราะอะไร Classloader รับเพียงหนึ่งโถหรือผสมคลาสโดยพลการ? ตัวอย่างเช่นถ้าคลาสถูกโหลดจาก Version-1.jar คลาสอื่น ๆ ทั้งหมดที่โหลดจาก classloader เดียวกันทั้งหมดจะไปอยู่ใน jar เดียวกันหรือไม่ คุณจัดการกับปัญหานี้อย่างไร? มีเคล็ดลับในการ "รวม" ไหลงใน …

6
ความแตกต่างระหว่าง“ java -cp” และ“ java -jar”?
อะไรคือความแตกต่างระหว่างการเรียกใช้แอปพลิเคชัน Java กับjava -cp CLASSPATHและjava -jar JAR_FILE_PATH? หนึ่งในนั้นเป็นที่ต้องการสำหรับการเรียกใช้แอปพลิเคชัน Java หรือไม่ ฉันหมายถึงวิธีใดต่อไปนี้ที่มีราคาแพงกว่าสำหรับ JVM (ตามการใช้ทรัพยากรเครื่อง) ข้อใดจะทำให้ JVM เกิดเธรดมากขึ้นในขณะที่พยายามเรียกใช้แอปพลิเคชัน
118 java  jar  jvm  classpath 

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