2011-07-15 32 views
27

Khi chạy dự án WebApp của tôi từ Eclipse hầu hết các lần chạy nó một cách chính xác. Nhưng nếu do lỗi dừng máy chủ, tôi sẽ xóa nó trong giao diện "Console" thay vì "Stop" Server từ "Servers" View. Trong khi chạy dự án sạch tôi có được điều nàyKhông thể "Chạy trên máy chủ" một ứng dụng web từ Eclipse

java.lang.NullPointerException 
at org.eclipse.wst.common.componentcore.internal.util.VirtualReferenceUtilities.getDefaultProjectArchiveName(VirtualReferenceUtilities.java:81) 
at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getJavaClasspathReferences(J2EEModuleVirtualComponent.java:332) 
at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getNonManifestRefs(J2EEModuleVirtualComponent.java:236) 
at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:160) 
at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:208) 
at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:201) 
at org.eclipse.jst.common.internal.modulecore.SingleRootUtil.hasConsumableReferences(SingleRootUtil.java:217) 
at org.eclipse.jst.common.internal.modulecore.SingleRootUtil.validateSingleRoot(SingleRootUtil.java:165) 
at org.eclipse.jst.common.internal.modulecore.SingleRootUtil.isSingleRoot(SingleRootUtil.java:93) 
at org.eclipse.jst.common.internal.modulecore.SingleRootExportParticipant.canOptimize(SingleRootExportParticipant.java:84) 
at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.canOptimize(FlatVirtualComponent.java:136) 
at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.cacheResources(FlatVirtualComponent.java:118) 
at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.fetchResources(FlatVirtualComponent.java:101) 
at org.eclipse.wst.web.internal.deployables.FlatComponentDeployable.members(FlatComponentDeployable.java:147) 
at org.eclipse.wst.server.core.internal.ModulePublishInfo.hasDelta(ModulePublishInfo.java:418) 
at org.eclipse.wst.server.core.internal.ServerPublishInfo.hasDelta(ServerPublishInfo.java:443) 
at org.eclipse.wst.server.core.internal.Server.hasPublishedResourceDelta(Server.java:1539) 
at org.eclipse.wst.server.core.internal.Server$ResourceChangeJob$1.visit(Server.java:214) 
at org.eclipse.wst.server.core.internal.Server.visitModule(Server.java:2929) 
at org.eclipse.wst.server.core.internal.Server.visit(Server.java:2913) 
at org.eclipse.wst.server.core.internal.Server$ResourceChangeJob.run(Server.java:225) 
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) 

Và trong khi tung ra tôi có được điều này

SEVERE: Error starting static Resources 
java.lang.IllegalArgumentException: Document base D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Webapp does not exist or is not a readable directory 
    at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142) 
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4319) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4488) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 

Xin giúp phục hồi từ này.

+0

là dựa trên Maven của bạn? Tôi đang phải đối mặt với cùng một vấn đề khi tôi cố gắng xây dựng openbravo ứng dụng ERP mã nguồn mở mà không phải là maven dựa trên nhật thực. –

Trả lời

0

Tôi đã ngừng sử dụng phương pháp này để chạy ứng dụng web của mình. Thay vào đó, tôi sử dụng mvn tomcat:run. Dễ dàng hơn nhiều. Mặc dù tôi không biết cách gỡ lỗi.

0

Kiểm tra Tomcat doc cho xyz Tài liệu cơ sở không tồn tại hoặc không phải là một thư mục có thể đọc được:

Tài liệu cơ sở không tồn tại hoặc không phải là một thư mục có thể đọc được URL định bởi tham số chiến tranh phải xác định một thư mục trên máy chủ này chứa phiên bản "chưa giải nén" của ứng dụng web hoặc URL tuyệt đối của tệp lưu trữ ứng dụng web (WAR) có chứa ứng dụng này. Sửa giá trị được chỉ định bởi tham số chiến tranh.

Bạn có thể tự làm "Clean ..." và sau đó "Publish" (từ trình đơn ngữ cảnh trên Tomcat trong chế độ xem Máy chủ) sau khi dự án đã hoàn thành?

+0

Khi tôi theo cách thủ công "Làm sạch ..." thì dấu vết ngăn xếp đầu tiên xảy ra. Eclipse nói "Đã xảy ra sự cố" và NullPointerException. Hãy giúp đỡ – Ram

+0

Ngoài ra hãy thử xem bạn có quyền truy cập và viết quyền vào thư mục mà webapp của bạn được triển khai hay không (D: \ workspace \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps) và nếu thư mục đó không được truy cập bởi một ứng dụng khác khi làm sạch từ Eclipse. – padis

+0

Nó hoạt động tốt trước đó. Và khi tôi bắt đầu với một không gian làm việc mới, vấn đề đã biến mất. Nhưng một lần nữa do nhầm lẫn tôi dừng máy chủ bằng cách giết chết nó, vấn đề này lại xuất hiện. – Ram

0

Sự cố này có thể do dự án địa phương của bạn không đồng bộ với kho lưu trữ mã của bạn. Tôi sẽ đề nghị làm mới/đồng bộ hóa dự án của bạn.

1

Chỉ cần làm maven -> Cập nhật cấu hình dự án và làm sạch/xây dựng từ nhật thực của bạn. Dự án sẽ được tải.

39

Tôi đã có một thời gian khó khăn để làm cho nó hoạt động, nhưng nhờ "Alexander Pogrebnyak" (xem deploying a war file in WTP(Eclipse) tomcat server) tôi đã có thể làm cho Eclipse dự án Web làm việc với Maven qua M2E:

Trước khi bắt đầu, tôi phải nói rằng Tôi là một người rất đáng ngờ, vì vậy tôi luôn bắt đầu bằng cách dọn dẹp tất cả các dự án của mình bằng cách sử dụng trình đơn "Eclipse> Project> Clean ..." (không chọn "bắt đầu xây dựng ngay lập tức"). Tôi cũng không chọn tùy chọn "Eclipse> Project> Build Automatically".

Nhân tiện, tôi cho rằng bạn sẽ cài đặt plugin m2e của mình, hoặc những gì tôi sẽ nói không có ý nghĩa ...

Vâng, chúng ta hãy bắt đầu:

Thứ nhất, bye bye cấu hình Server:

1) Nếu bạn có bất kỳ dự án trong một cấu hình máy chủ trước đó, loại bỏ nó (click chuột phải trên máy chủ và chọn " Thêm và loại bỏ "tùy chọn)

2) Làm sạch thư mục làm việc máy chủ của bạn (click chuột phải trên máy chủ và chọn "Tomcat server làm việc Directory")

3) Làm sạch biên soạn" còn sót lại s "(nhấn chuột phải trên máy chủ và chọn 'sạch')

4) Di chuyển cấu hình máy chủ của bạn từ 'Servers' tab

5) Hoàn toàn xóa của bạn 'máy chủ' dự án/thư mục (hiển thị trong bạn" Project Explorer" tab)

6) BONUS: tôi cũng loại bỏ môi trường máy chủ thời gian chạy của tôi ("Eclipse> Window> Preferences> máy chủ> Runtime Environments")

thứ hai, "Maven sạch"(nếu dự án web của bạn có bản chất "Maven"):

1) Nhấp chuột phải dự án web của bạn

2) "Pop up Menu> Run As> Maven sạch"

này nên quét sạch thư mục đích của bạn

Thứ ba, hội nhập Instal M2E WTP (yeah ! Nó không đến như là "mặc định". Một cả ngày để con nó ra):

1) Mở Maven "Discovery" tùy chọn (Eclipse> Windows> Preferences> Maven> Discovery)

2) Nhấn nút "Open Catalog" (một "M2E Marketplace "cửa sổ sẽ xuất hiện)

3) Cuộn xuống cho đến khi bạn tìm thấy tùy chọn" WTP Integration ", sau đó" kiểm tra "nó!

4) Nhấn "Hoàn tất"

5) Một "màn hình plugin như" sẽ xuất hiện. "Next", "Next", "Đồng ý", blah, blah, blah ...

Thứ tư, rời Eclipse hơn chạy nó một lần nữa:

1) Nếu không được yêu cầu restar Eclipse (mà tôi tìm thấy khó tin bạn sẽ không), khởi động lại nó cho mình!

Thứ năm, maven tái hòa nhập:

1) Thêm Maven thiên nhiên để dự án (Nhấp chuột phải dự án web của bạn, "Pop up Menu> Configure> Convert to Maven Dự án")

2) Cập nhật cấu hình maven của bạn (Yeah, yeah, đáng ngờ, tôi biết).Nhấp chuột phải vào dự án web của bạn một lần nữa, bây giờ với dấu "M" trên biểu tượng của nó ("Trình đơn bật lên> Maven> Cập nhật dự án")

3) Chạy cài đặt maven (Nhấp chuột phải vào dự án web của bạn, "Trình đơn bật lên> Run As> Maven cài đặt ")

4) Xây dựng dự án của bạn (" Eclipse> Project> Build All ")

Thứ sáu, đặt nó tất cả để làm việc:

1) Triển khai và chạy của bạn ứng dụng web (Nhấp chuột phải vào dự án web của bạn, "Trình đơn bật lên> Chạy dưới dạng> Chạy trên máy chủ")

2) Bạn sẽ được yêu cầu tạo cấu hình máy chủ khác. Nó sẽ tạo ra các "máy chủ" dự án/thư mục một lần nữa, nhưng đó là cách nó được.

Vậy đó !!! Tôi phải thừa nhận, một khi tôi chạy máy chủ, nó đã không làm việc, nhưng thời gian này (tôi không biết tại sao) "Log4J" thư viện không thể được tìm thấy. Sau khi một "dự án sạch" + "maven sạch" và một "maven install" + "project build" một thông báo khác nói rằng lớp Servlet của tôi không thể tìm thấy. Một lần nữa, tôi thực hiện một "dự án sạch" + "maven sạch" và một "maven install" + "dự án xây dựng" và "thì đấy" !!! Nó hoạt động (Và đó là lý do tại sao tôi rất đáng ngờ).

Tôi đã bắt đầu lo lắng với điều này mới Juno + M2E đôi ... Không bao giờ có loại vấn đề với Indigo hoặc Ganymede ... Nhưng tôi đoán tôi có thể tin tưởng Eclipse nữa (tôi có thể?)

+0

Điều này làm việc tuyệt vời cho tôi, tôi đã có thể gỡ lỗi máy chủ sau này. Cảm ơn! –

+1

Câu trả lời thú vị. Có ai biết làm thế nào tôi có thể chuyển một số điểm của tôi cho anh chàng này? – jsalvata

+0

Cảm ơn rất nhiều :) – Manu

7

Đừng làm những cách giải quyết vũ trụ điên rồ đó !!

này hoạt động tốt:

Thêm vào tập tin của bạn ".project" (ẩn) những dòng này:

<natures> 
    <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> 
    <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> 
    <nature>org.eclipse.jdt.core.javanature</nature> 
    <nature>org.eclipse.m2e.core.maven2Nature</nature> 
    <nature>org.eclipse.wst.common.project.facet.core.nature</nature> 
    <nature>org.eclipse.wst.jsdt.core.jsNature</nature> 
    </natures> 

Thưởng thức!

Tại sao? nếu bạn kiểm tra rằng thư mục chưa tồn tại, tốt, rằng "../.metadata/blah/blah/tmp0/wtpwebapps/YOURPROJECT/" là EMPTY: sau đó xây dựng của bạn aint tạo WAR ... !!! Bởi vì plugin maven không hiểu được HE HAVE TO!

Tôi thấy điều này sau khi so sánh hai tập tin .project từ cả hai không triển khai dự án triển khai khác nhau/...

Hope giúp!

+0

* maven plugin * ... Đây chắc chắn không phải là lần đầu tiên một cái gì đó liên quan đến maven không hoạt động chính xác. – BenoitParis

3

Tôi đã xóa các "vấn đề thư mục" .metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ và nó hoạt động bây giờ :)

+1

Đó là một giải pháp thực sự! Tomcat không triển khai ứng dụng web vì thư mục này có thông tin từ lần triển khai trước –

+0

Trong trường hợp của tôi, nó là tmp1. Tôi làm cho nó trống rỗng và khởi động lại nhật thực rồi nó hoạt động. – Ramsharan

0

tôi gặp phải vấn đề tương tự và làm sạch và tái tạo máy chủ không giúp được gì. Nhưng khi tôi triển khai một dự án khác, nó đã có thể bắt đầu thành công. Sau khi so sánh nhiều, tôi tìm thấy sự khác biệt trong các tập tin .project. Vì vậy, tôi sao chép nội dung của tập tin .project của dự án làm việc vào một trong đó có vấn đề, thêm nó trở lại máy chủ và nó hoạt động. Sau đây là nội dung của tệp .project hoạt động. Lưu ý rằng bạn cần phải thay đổi tên của dự án cho phù hợp:

<?xml version="1.0" encoding="UTF-8"?> 
<projectDescription> 
<name>Project Name</name> 
<comment></comment> 
<projects> 
</projects> 
<buildSpec> 
    <buildCommand> 
     <name>org.eclipse.wst.jsdt.core.javascriptValidator</name> 
     <arguments> 
     </arguments> 
    </buildCommand> 
    <buildCommand> 
     <name>org.eclipse.jdt.core.javabuilder</name> 
     <arguments> 
     </arguments> 
    </buildCommand> 
    <buildCommand> 
     <name>org.eclipse.wst.common.project.facet.core.builder</name> 
     <arguments> 
     </arguments> 
    </buildCommand> 
    <buildCommand> 
     <name>org.eclipse.wst.validation.validationbuilder</name> 
     <arguments> 
     </arguments> 
    </buildCommand> 
</buildSpec> 
<natures> 
    <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> 
    <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> 
    <nature>org.eclipse.wst.common.project.facet.core.nature</nature> 
    <nature>org.eclipse.jdt.core.javanature</nature> 
    <nature>org.eclipse.wst.jsdt.core.jsNature</nature> 
</natures> 

0

mọi Cố gắng không có may mắn. Tôi chỉ có một dự án trong nhật thực của tôi. Shut eclipse xuống, đổi tên thư mục eclipse, giải nén nó một lần nữa, bắt đầu mới trong nhật thực mới. Nó đã làm việc.

Không, nó không hiệu quả.

3

Tôi có cùng một vấn đề và ngoại lệ chính xác, nhưng tôi đã giải quyết được vấn đề bằng cách chỉ định loại gói POM để chiến tranh như "chiến tranh" và nhấp chuột phải vào dự án và chọn 'Maven> Cập nhật cấu hình dự án', sau đó lại triển khai mô-đun web đó cho máy chủ tomcat, đúng vậy!

0

bước mà tôi đi theo và sẽ làm việc 100%:

máy chủ của bạn
  1. sạch và máy chủ của bạn thư mục làm việc bằng cách nhấp chuột phải vào máy chủ
  2. Xóa thư mục máy chủ từ cửa sổ nhà thám hiểm dự án của bạn
  3. Remove máy chủ từ môi trường thời gian chạy tức là từ Eclipse -> Window -> Tuỳ chọn -> Máy chủ -> Môi trường thời gian chạy
  4. Đóng nhật thực và bắt đầu lại
  5. Chạy tệp trên máy chủ agai n cấu hình lại máy chủ Apache
  6. Sự cố được giải quyết
1

Tôi gặp phải vấn đề này nhưng nguyên nhân khác. Sự cố phát sinh từ wrong server name([Project Name] != [Server Name]). Tôi nghĩ rằng tôi có thể tìm ra bằng cách tạo lại Máy chủ.

Vấn đề này có thể giải quyết bằng cách làm theo các bước dưới đây:

  1. Remove Server: nhấp chuột phải vào [Severs] và loại bỏ máy chủ.
  2. Xóa máy chủ: nhấp chuột phải vào [Project Explorer] và xóa Máy chủ (bạn đã tạo).
  3. Dự án sạch: menu [Project -> Clean]
  4. Tạo máy chủ: nhấp chuột phải vào [Severs] và máy chủ mới.
  5. Chỉnh sửa tệp server.xml: Chỉnh sửa server.xml bỏ máy chủ web của bạn.
  6. Thêm máy chủ: nhấp chuột phải vào [Severs] và xóa máy chủ.
0
Check this version: 

<web-app version="**2.5**" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_**2_5**.xsd" metadata-complete="true"> 

and 

org.eclipse.wst.common.project.facet.core.xml 

<installed facet="jst.web" version="**2.5**"/> 

It can be incompatible with the chosen server. In my case when I tried to upgrade 3.0 tomcat 6.0 stopped working so I had to revert back to 2.5 


so upgrade your server to a highter version or downgrade the web.xml version and run maven --> update project and try again 
0

Trong trường hợp của tôi như thế là đủ để sao chép (từ dự án làm việc):

  1. .settings
  2. classpath
  3. .projects
1

Tôi đã khá bối rối bởi vấn đề bởi vì tôi đã có một phụ thuộc jar khác làm việc trước khi vấn đề xảy ra. Tôi đang sử dụng Eclipse Luna đã tích hợp m2e và không có giải pháp nào ở trên phù hợp với tôi.

Sự cố bắt đầu khi thêm phụ thuộc vào lọ mới vào dự án chiến tranh maven, nhưng nó vẫn hoạt động tốt khi dự án được nhận xét trong pom. May mắn là tôi đã có thể so sánh cả hai dự án và cuối cùng vấn đề này liên quan đến một khía cạnh dự án còn thiếu trong dự án jar mới: Utility Module.

  1. Nút chuột phải vào dự án: Dự án khía cạnh
  2. Kiểm tra "Utility Module" và lưu
  3. Di chuyển các ứng dụng từ tomcat và xuất bản nó một lần nữa.
Các vấn đề liên quan