Netbeans Java Web应用程序在将类移动到包后不会部署
我只是将所有java类移动到一个包(SSP)中,因为我将它们放在默认包中,现在我的应用程序将不再部署到tomcat 我使用:Netbeans Java Web应用程序在将类移动到包后不会部署,java,tomcat,netbeans,web-applications,Java,Tomcat,Netbeans,Web Applications,我只是将所有java类移动到一个包(SSP)中,因为我将它们放在默认包中,现在我的应用程序将不再部署到tomcat 我使用: Netbeans 8.0.2 Tomcat 8.0.28 PostgreSQL 9.4 我尝试了以下方法,没有任何改变: 已删除位于C:\Users\MyUser\AppData\Local\Netbeans\Cache的Netbeans缓存 清洁和建设项目 关闭tomcat并重新启动它 错误(Tomcat日志): Netbeans调试错误: FAIL - Dep
- Netbeans 8.0.2
- Tomcat 8.0.28
- PostgreSQL 9.4
- 已删除位于C:\Users\MyUser\AppData\Local\Netbeans\Cache的Netbeans缓存
- 清洁和建设项目
- 关闭tomcat并重新启动它
FAIL - Deployed application at context path /Self-Service-Portal but context failed to start
D:\Dropbox\Bachelor\Java Projects\Self-Service-Portal\nbproject\build-impl.xml:1157: The module has not been deployed.
以下代码段是tomcat日志中命名的类:
SSP.Load\u config.getPropValues\u db\u user\u pw(Load\u config.java:89)
SSP.Roles\u rights.get\u Roles\u rights(Roles\u rights.java:52)
SSP.Roles\u rights.getInstance(Roles\u rights.java:35)
以防我提供更多信息:
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="Self-Service-Portal" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>SSP.Login</servlet-class>
</servlet>
<servlet>
<servlet-name>Usermode</servlet-name>
<servlet-class>SSP.Usermode</servlet-class>
</servlet>
<servlet>
<servlet-name>Echo_usermode</servlet-name>
<servlet-class>SSP.Echo_usermode</servlet-class>
</servlet>
<servlet>
<servlet-name>User_management</servlet-name>
<servlet-class>SSP.User_management</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/portal.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Usermode</servlet-name>
<url-pattern>/usermode/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Echo_usermode</servlet-name>
<url-pattern>/echo_usermode</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>User_management</servlet-name>
<url-pattern>/user_management/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<listener>
<listener-class>SSP.Startup</listener-class>
</listener>
正如这之前所显示的,从来没有引起过问题,我不知道这是否是原因
有没有人知道为什么我的应用程序不会部署,仅仅因为我的类现在在包SSP中,而不再在默认包中,因为我在web.xml中调整了包更改
问候
Alkahna您尝试关闭inputstream,即使它为空。考虑移动来代替资源尝试。或者至少检查inputStream是否为
!=在关闭它之前为空
73: try {
76: inputStream = getClass().getResourceAsStream(propFileName);
77
78: if (inputStream != null) {
80: } else {
82: }
83:
88: } finally {
89: inputStream.close(); //Might be null -> cause of your error
90: }
至于为什么为空:检查属性文件是否部署到了您认为应该部署的位置。尝试使用getClass().getResourceAsStream()
而不是使用classloader方法。尝试使用绝对路径/SSP/db_settings.properties
我添加了空检查&从getClass().getClassLoader().getresourceastream()
更改为getClass()getresourceastream(propFileName)
,现在工作正常,非常感谢:)事实证明空检查不是必需的,而是从getClass().getClassLoader().getResourceAsStream()
到getClass()getResourceAsStream(propFileName)
的更改解决了这个错误空检查是导致可见错误的原因。这是一件好事,因为否则您的问题可能是“我的数据库连接不工作”:-)我不明白为什么当所有类都在默认包中时它会工作,而错误只在类不在默认包中时发生
40: public void get_roles_rights(){
41:
42: // Get roles & rigths from db
43: // variables
44: JDBCConnection database_connection = null;
45: ResultSet m_ResultSet = null;
46:
47: // load standard db-user from config file
48: Load_config properties = new Load_config();
49:
50: // connect to postgreSQL Database
51: try {
52: database_connection = new JDBCConnection("Self-Service-Portal", properties.getPropValues_db_user(), properties.getPropValues_db_user_pw());
53: } catch (IOException ex) {
54: Logger.getLogger(User_management.class.getName()).log(Level.SEVERE, null, ex);
55: }
.......
114: }
24: public class Roles_rights {
25:
26: public List<List<Integer>> oe_fac_roles_rights = new ArrayList<List<Integer>>(4);
27:
28: private static Roles_rights instance = null;
29: private Roles_rights() {
30: // Exists only to defeat instantiation.
31: }
32: public static Roles_rights getInstance() {
33: if(instance == null) {
34: instance = new Roles_rights();
35: instance.get_roles_rights();
36: }
37: return instance;
38: }
39:
40: public void get_roles_rights(){
......
114: }
115: }
16: public class Startup implements javax.servlet.ServletContextListener {
17:
18: @Override
19: public void contextInitialized(ServletContextEvent sce) {
20: // create singleton object to get all roles/rights from db
21: Roles_rights tmp = Roles_rights.getInstance();
22: }
23:
24: @Override
25: public void contextDestroyed(ServletContextEvent sce) {
26: throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
27: }
28: }
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="Self-Service-Portal" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>SSP.Login</servlet-class>
</servlet>
<servlet>
<servlet-name>Usermode</servlet-name>
<servlet-class>SSP.Usermode</servlet-class>
</servlet>
<servlet>
<servlet-name>Echo_usermode</servlet-name>
<servlet-class>SSP.Echo_usermode</servlet-class>
</servlet>
<servlet>
<servlet-name>User_management</servlet-name>
<servlet-class>SSP.User_management</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/portal.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Usermode</servlet-name>
<url-pattern>/usermode/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Echo_usermode</servlet-name>
<url-pattern>/echo_usermode</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>User_management</servlet-name>
<url-pattern>/user_management/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<listener>
<listener-class>SSP.Startup</listener-class>
</listener>
cvc-elt.1: Cannot find the declaration of element 'web-app'
73: try {
76: inputStream = getClass().getResourceAsStream(propFileName);
77
78: if (inputStream != null) {
80: } else {
82: }
83:
88: } finally {
89: inputStream.close(); //Might be null -> cause of your error
90: }