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.
phpcn_u1582
phpcn_u1582 2017-05-17 09:58:05
0
5
1048

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_u1582
phpcn_u1582

membalas semua(5)
某草草

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

刘奇

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. 🎜
PHPzhong

Pakej bergantung pada masa jalan

PHPzhong

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

我想大声告诉你

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan