cari

Rumah  >  Soal Jawab  >  teks badan

java-web - Java WEB: Apakah jenis pakej balang yang mesti diletakkan di bawah WEB-INF? Jika beberapa pakej diletakkan di luar, tomcat tidak akan dapat dimulakan.

Terdapat dua pakej jar commons-fileupload-1.3.2.jar dan commons-io-2.5.jar
Saya pada mulanya meletakkan kedua-dua pakej ini di luar seperti pakej lain, iaitu, Perpustakaan Luaran
Tulis kelas yang berkaitan Selepas itu, konfigurasikan servlet dan pemetaan dalam web.xml

<servlet>
    <servlet-name>mytest</servlet-name>
    <servlet-class>servlet.FileUploadServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>mytest</servlet-name>
    <url-pattern>/upload</url-pattern>
</servlet-mapping>

Kemudian Tomcat gagal dimulakan, gesa:

Kritikal: ContainerBase.addChild: mulakan:
org.apache.catalina.LifecycleException: Gagal memulakan komponen

java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException

Soalan:
Adakah dua balang commons-fileupload dan commons-io perlu diletakkan di bawah WEB-INF Mengapa?
Mengapa ia tidak boleh diletakkan di Perpustakaan Luar? Semua pakej saya yang lain boleh digunakan dalam Luaran Mengapa kedua-dua ini tidak boleh diakses?
Saya mencipta lib baharu di bawah WEB-INF, dan kemudian meletakkan dua pakej ini ke dalamnya apabila saya mengeluarkannya, dan kemudian ia berjalan seperti biasa Apakah yang istimewa tentang kedua-dua pakej ini? Mengapa anda mesti meletakkan WEB-INF di bawahnya

phpcn_u1582phpcn_u15822789 hari yang lalu1077

membalas semua(5)saya akan balas

  • 某草草

    某草草2017-05-17 10:00:05

    aplikasi penerbitan pemalam tomcat idea ialah Artifak ini

    Periksa sama ada Artifak projek semasa anda tidak mempunyai pakej balang yang bergantung padanya di Perpustakaan Luar

    Kemudian tambahkan lib pada Artifak ini (dalam projek web/WEB-INF/lib下放入jar包会自动加到Artifact里面。这就是为什么你说的为什么放到WEB-INF才行的原因。当然你完全可以把依赖jar包还放在External Libraries,在Artifact这里添加上就行,不过还是推荐把依赖的jar包放在项目web/WEB-INF/lib, letakkan folder ini sebagai perpustakaan balang dalam Perpustakaan Luar)

    Masalah kebergantungan telah diselesaikan selepas memulakan tomcat

    balas
    0
  • 怪我咯

    怪我咯2017-05-17 10:00:05

    Pertama sekali, izinkan saya membetulkan anda Ia adalah direktori WEB-INF, bukan WEB-INFI. WEB-INF目录,不是WEB-INFI。

    发布之前,你是用maven对项目打包的吗?如果maven中有commons-fileupload的依赖,打包时会放在WEB-INF/lib

    Adakah anda menggunakan maven untuk membungkus projek sebelum diterbitkan? Jika terdapat pergantungan commons-fileupload dalam maven, ia akan diletakkan di bawah WEB-INF/lib semasa pembungkusan. 🎜

    balas
    0
  • PHPz

    PHPz2017-05-17 10:00:05

    Pakej bergantung pada masa jalan

    balas
    0
  • PHPz

    PHPz2017-05-17 10:00:05

    Pakej balang yang diletakkan dalam WEB-INF/lib, walaupun ia tidak diperkenalkan sebagai kebergantungan, akan disertakan dalam pakej perang terakhir secara lalai (lokasinya masih WEB-INF/lib) semasa pembungkusan. Bagi pakej jar yang tidak terletak di bawah WEB-INF/lib, ia perlu diperkenalkan sebagai kebergantungan sebelum pakej perang terakhir akan dimasukkan semasa pakej (ia akan tetap terletak di WEB-INF/lib). Untuk kaedah memperkenalkan kebergantungan, sila rujuk jawapan di tingkat 3

    balas
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-17 10:00:05

    Saya juga menghadapi masalah ini. Saya mendapati Jar yang diimport tidak ditambahkan pada WEB-INF/lib apabila ia dikeluarkan. Saya benar-benar tidak dapat melihat Jar yang sepadan dalam direktori Tomcat, jadi saya menyalin dan menampalnya setiap kali selepas mengimport. Di bawah WEB-INF/lib, kadangkala tampal terus ke dalam Referenced Libraries dan WEB-INF/lib tanpa mengimport.

    balas
    0
  • Batalbalas