Netbeans Java Web应用程序在将类移动到包后不会部署

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

我只是将所有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 - 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:    }