英文:
How to Solve this java.lang.NullPointerException Error in Java?
问题
I don't know why I am getting the null pointer error.
java.lang.NullPointerException
在 web.index.getMessage(index.java:30) 处
在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 处
在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 处
在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 处
在 java.base/java.lang.reflect.Method.invoke(Method.java:566) 处
在 javax.el.ELUtil.invokeMethod(ELUtil.java:227) 处
在 javax.el.BeanELResolver.invoke(BeanELResolver.java:440) 处
在 javax.el.CompositeELResolver.invoke(CompositeELResolver.java:198) 处
在 com.sun.el.parser.AstValue.getValue(AstValue.java:110) 处
在 com.sun.el.parser.AstValue.getValue(AstValue.java:177) 处
在 com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:183) 处
在 org.jboss.weld.module.web.el.WeldValueExpression.getValue(WeldValueExpression.java:50) 处
在 com.sun.faces.facelets.el.ELText$ELTextVariable.writeText(ELText.java:216) 处
在 com.sun.faces.facelets.el.ELText$ELTextComposite.writeText(ELText.java:123) 处
在 com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:44) 处
在 com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:41) 处
在 com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:169) 处
在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650) 处
在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650) 处
在 com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:468) 处
在 com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:170) 处
在 javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:132) 处
在 com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:102) 处
在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76) 处
在 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:199) 处
在 javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:708) 处
在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:451) 处
在 org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1628) 处
在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:258) 处
在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) 处
在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:755) 处
在 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:575) 处
在 com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) 处
在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159) 处
在 org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:371) 处
在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:238) 处
在 com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520) 处
在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217) 处
在 org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182) 处
在 org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156) 处
在 org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218) 处
在 org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95) 处
在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260) 处
在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177) 处
在 org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109) 处
在 org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88) 处
在 org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53) 处
在 org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524) 处
在 org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89) 处
在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94) 处
在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:33) 处
在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114) 处
在 org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569) 处
在 org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549) 处
在 java.base/java.lang.Thread.run(Thread.java:834)
在包 web 中的 index.java 文件:
package web;
import ejb.EmployeeFacadeLocal;
import entities.Employee;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
import javax.ejb.EJB;
@Named(value = "index")
@SessionScoped
public class index implements Serializable {
    @EJB
    EmployeeFacadeLocal employee;
    public index() {
    }
    public String getMessage() {
        Employee emp = new Employee(Integer.SIZE, "XYZ");
        System.out.print(emp); /* Printing Objects */
        employee.create(emp);
        return "Hello All";
    }
}
在包 ejb 中的 EmployeeFacade.java 文件:
package ejb;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
public class EmployeeFacade {
    @PersistenceContext(unitName = "TODO-5PU")
    private EntityManager em;
    protected EntityManager getEntityManager() {
        return em;
    }
}
在包 ejb 中的 AbstractFacade.java 文件:
package ejb;
import java.util.List;
import javax.persistence.EntityManager;
public abstract class AbstractFacade<T> {
    private Class<T> entityClass;
    public AbstractFacade(Class<T> entityClass) {
        this.entityClass = entityClass;
    }
    protected abstract EntityManager getEntityManager();
    public void create(T entity) {
        System.out.print(entity);
        getEntityManager().persist(entity);
    }
}
在包 ejb 中的 EmployeeFacadeLocal.java 文件:
package ejb;
import entities.Employee
<details>
<summary>英文:</summary>
  I dont know why i am getting the null pointer error .
java.lang.NullPointerException
	at web.index.getMessage(index.java:30)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at javax.el.ELUtil.invokeMethod(ELUtil.java:227)
	at javax.el.BeanELResolver.invoke(BeanELResolver.java:440)
	at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:198)
	at com.sun.el.parser.AstValue.getValue(AstValue.java:110)
	at com.sun.el.parser.AstValue.getValue(AstValue.java:177)
	at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:183)
	at org.jboss.weld.module.web.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
	at com.sun.faces.facelets.el.ELText$ELTextVariable.writeText(ELText.java:216)
	at com.sun.faces.facelets.el.ELText$ELTextComposite.writeText(ELText.java:123)
	at com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:44)
	at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:41)
	at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:169)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:468)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:170)
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:132)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:102)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:199)
	at javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:708)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:451)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1628)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:258)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:755)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:575)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:371)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:238)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:33)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
	at java.base/java.lang.Thread.run(Thread.java:834)  
package web;
        
        import ejb.EmployeeFacadeLocal;
        import entities.Employee;
        import javax.inject.Named;
        import javax.enterprise.context.SessionScoped;
        import java.io.Serializable;
        import javax.ejb.EJB;
        
        @Named(value = "index")
        @SessionScoped
        public class index implements Serializable {
        
        @EJB
        EmployeeFacadeLocal employee;
        public index() {
            } 
            public String getMessage(){
                Employee emp = new Employee(Integer.SIZE,"XYZ");
                System.out.print(emp) */ Printing Objects */
                employee.create(emp);
                return "Hello All";
            }
        }
        
           
  
  package ejb;
    
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    
    public class EmployeeFacade {
    
        @PersistenceContext(unitName = "TODO-5PU")
        private EntityManager em;
    
        @override
        protected EntityManager getEntityManager() {
            return em;
        }
        
    }
    
 package ejb;
    
    import java.util.List;
    import javax.persistence.EntityManager;
    
    
    public abstract class AbstractFacade<T> {
    
        private Class<T> entityClass;
    
        public AbstractFacade(Class<T> entityClass) {
            this.entityClass = entityClass;
        }
    
        protected abstract EntityManager getEntityManager();
    
        public void create(T entity) {
            System.out.print(entity);
            getEntityManager().persist(entity);
        }
    }
    package ejb;
        
        import entities.Employee;
        import java.util.List;
        import javax.ejb.Local;**strong text**
        @Local
        public interface EmployeeFacadeLocal {
        
            void create(Employee employee);
        }
        
  
  package entities;
    
    import java.io.Serializable;
    import javax.persistence.Basic;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
    import javax.persistence.Table;
    import javax.validation.constraints.Size;
    import javax.xml.bind.annotation.XmlRootElement;
    
    @Entity
    @Table(name = "employee")
    @XmlRootElement
    @NamedQueries({
        @NamedQuery(name = "Employee.findAll", query = "SELECT e FROM Employee e"),
        @NamedQuery(name = "Employee.findById", query = "SELECT e FROM Employee e WHERE e.id = :id"),
        @NamedQuery(name = "Employee.findByName", query = "SELECT e FROM Employee e WHERE e.name = :name")})
    public class Employee implements Serializable {
    
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Basic(optional = false)
        @Column(name = "ID")
        private Integer id;
        @Size(max = 255)
        @Column(name = "NAME")
        private String name;
    
        public Employee() {
        }
    
        public Employee(Integer id , String name) {
            this.id = id;
            this.name = name;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (id != null ? id.hashCode() : 0);
            return hash;
        }
    
        @Override
        public boolean equals(Object object) {
            // TODO: Warning - this method won't work in the case the id fields are not set
            if (!(object instanceof Employee)) {
                return false;
            }
            Employee other = (Employee) object;
            if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
                return false;
            }
            return true;
        }
    
        @Override
        public String toString() {
            return "entities.Employee[ id=" + id + "]";
        }
        
    }
         
</details>
# 答案1
**得分**: 2
"getMessage"在第30行接收到一个"null"值。检查这个值来自哪里,你应该能够找到问题的原因。
<details>
<summary>英文:</summary>
The "getMessage" at line 30 receives a "null" value. Check from where that values comes and you should be able to pinpoint your problem.
</details>
				通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论