ทุกวันนี้โครงการนี้เป็นโครงการ Java Web โดยทั่วไปดังนั้นจะมีปัญหาเมื่อนำเข้าแพ็คเกจ JAR ฉันจะแนะนำความแตกต่างระหว่างโครงการ Java และ Java Web Projects เป็นหลัก:
โครงการ Java:
เมื่อ classloader โหลด jar และคลาสมันจะถูกโหลดแยกกัน โดยทั่วไปการนำเข้าขวดแบ่งออกเป็นสองประเภท:
1. แนะนำโดยตรงใน lib ภายใต้ web-inf
2. เปิดตัวในไลบรารีผู้ใช้
ไม่ว่าจะมีการแนะนำใดข้างต้นแพ็คเกจ JAR สามารถโหลดและรันได้และ classloader จะโหลดอย่างชาญฉลาด (JRE ในพื้นที่)
โครงการ Javaweb:
มันไม่ได้ทำงานผ่าน JRE ในท้องถิ่น แต่ถูกนำไปใช้กับเว็บเซิร์ฟเวอร์ (เช่น Tomcat, Jetty) ซึ่งทั้งหมดใช้งานรถตักคลาสของตัวเอง
นำ Tomcat เป็นตัวอย่าง:
1. Commonclassloader ทั่วไป
2. เซิร์ฟเวอร์ catalinaclassloader
3. SharedClassLoader
4. WebApps WebAppClassLoader (โหลด jar ภายใต้ web-inf)
พูดง่ายๆคือถ้าคุณแนะนำแพ็คเกจ JAR ในโครงการ Javaweb คุณจะต้องนำเข้าแพ็คเกจ JAR ลงใน Web-Inf เพื่อให้เซิร์ฟเวอร์สามารถโหลดและเมื่อโครงการทำงานได้วิธีการโครงการสามารถเรียกได้ หากใส่ลงในไลบรารีผู้ใช้เป็นไปไม่ได้เพราะสามารถทำงานได้ในเครื่องเท่านั้นและเซิร์ฟเวอร์ไม่สามารถโหลดได้ ดังนั้นจึงไม่มีปัญหาเมื่อโครงการเรียกวิธีการในเครื่อง แต่เมื่อเซิร์ฟเวอร์ทำงานจะรายงานว่าไม่สามารถพบ JAR ที่สอดคล้องกันได้
บทความข้างต้นพูดสั้น ๆ เกี่ยวกับความแตกต่างระหว่างโครงการ Java และโครงการ Javaweb ที่นำเข้าแพ็คเกจ JAR เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น