2013-08-27 88 views
11

Tôi cố gắng để thiết lập đường dẫn JAVA_HOME như máy chủ Tomcat của tôi là tìm kiếm nó. Tôi đang cố gắng để thiết lập nó nhưng nó dường như không hoạt động và gây ra một lỗi khi tôi làm. Tôi cố gắng để thiết lập JAVA trong setclasspath.bat sử dụngTomcat 6 JAVA_HOME

set JAVA_HOME="C:\Program Files (x86)\Java\jre7" 

Đây là lúc bắt đầu của setclasspath.bat

set JAVA_HOME="C:\Program Files (x86)\Java\jre7" 
if not "%JAVA_HOME%" == "" goto gotJdkHome 
if not "%JRE_HOME%" == "" goto gotJreHome 
echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 
echo At least one of these environment variable is needed to run this program 
goto exit 

Khi tôi đặt này và chạy "startup.bat bắt đầu" nó hiển thị

tập tin đã bất ngờ vào thời điểm này

bạn có thể giúp tôi?

+0

Hãy thử thiết lập JAVA_HOME như biến môi trường hệ thống, đi đến Nâng cao Tab các thiết lập hệ thống , nhấp vào Mới và đặt JAVA_HOME. –

+3

Đường dẫn của bạn chứa khoảng trắng, điều này không hoạt động trong các tệp .BAT. Bạn phải kèm theo đường dẫn của bạn trong dấu ngoặc kép. 'đặt JAVA_HOME =" C: \ Program Files (x86) \ Java \ jre7 "'. Tuy nhiên bạn đang trỏ đến một JRE, cho tomcat để làm việc bạn phải trỏ đến một JDK (tomcat cần một trình biên dịch và đó không phải là một phần của JRE nhưng của JDK). –

Trả lời

-3

Bạn đang trỏ đến một JRE. Bạn cần để trỏ đến một JDK, mà cho vị trí của JRE của bạn có thể là một cái gì đó giống như C:\Program Files (x86)\Java\jdk1.6.0_26 hoặc tương đương. Hoặc, nếu bạn chỉ cài đặt JRE, bạn sẽ cần phải cài đặt một JDK đầy đủ. Tomcat cần có khả năng biên dịch các tệp JSP thành các tệp .class, mà một JRE không thể làm được.

+1

Bị bỏ phiếu vì câu trả lời này không chính xác. Tôi đã vạch ra những gì gây ra vấn đề ban đầu và làm thế nào để tránh nó trong [câu trả lời của tôi ở đây] (http://stackoverflow.com/questions/18468681/tomcat-6-java-home/29076720#29076720). – ZaLiTHkA

1

Đặt đường dẫn trong dấu ngoặc kép:

set JAVA_HOME="C:\Program Files (x86)\Java\jre7" 

Lỗi này là do thực tế rằng nó phân tích các tập tin trong Program Files như một tham số riêng biệt, mà SET không mong đợi. Tại sao SET không đọc nó đúng cách Tôi không thể nói mà không biết nhiều hơn về những gì bạn đang sử dụng hệ điều hành, những gì lệnh shell bạn đang chạy Tomcat từ, và như vậy.

+0

Tôi đang chạy nó trên Windows Server 2008 R2 Enterprise 64bi và mã về là một tập tin bat; Tôi chỉ chạy Tomcat thông qua CMD. – QuinsUK

1

Lý do tại sao lệnh của bạn thất bại là vì nó có khoảng trắng giữa 'Program Files (x86)' và vì vậy nó bắt đầu đọc lệnh từ 'Files (x86)'. Vì vậy, thay vào đó chúng tôi đặt nó ở giữa các dấu ngoặc kép như sau. thử này ..

set JAVA_HOME="C:\"Program Files (x86)"\Java\jre7" 
+0

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng bạn và sau khi bạn có đủ [danh tiếng] (http://stackoverflow.com/help/whats-reputation), bạn sẽ có thể [nhận xét về bài đăng bất kỳ] (http://stackoverflow.com/help/privileges/comment). –

+0

tôi sẽ chỉnh sửa câu trả lời ngay lập tức .. Cảm ơn bạn. –

6

tôi đã cùng một vấn đề trên Windows 7 với các định nghĩa sau đây (tôi đặt nó trong một tập tin setenv.bat trong thư mục jdk bin theo quy định của RUNNING.txt tomcat 7.

set JAVA_HOME="C:\Program Files (x86)\Java\jre7" 

tôi chỉ cố gắng loại bỏ các dấu ngoặc kép hoàn toàn:.

set JAVA_HOME=C:\Program Files (x86)\Java\jre7 

Và tomcat sau đó bắt đầu

+0

Đây là giải pháp phù hợp với tôi: +1. – TypeIA

27

Lưu ý: Tôi nhận ra điều này là đã khá một câu hỏi cũ, nhưng nhiều câu trả lời được đăng ở đây là không đầy đủ hoặc không chính xác .. Hy vọng rằng điều này sẽ giúp tiết kiệm một vài cơn đau đầu.

Thứ nhất: Tomcat không cần một JDK để chạy, nó sẽ hoạt động tốt với một JRE, miễn là nó biết đó là một JRE.

Thứ hai, lỗi từ câu hỏi ban đầu đến từ một vấn đề với cú pháp của lệnh set JAVA_HOME=.... Bản thân Apache có thể xử lý nó tốt hơn bằng cách tước và thêm " dấu ngoặc kép.

Ngoài ra, tôi đặc biệt khuyên bạn nên tạo tệp setenv.bat trong thư mục bin. Nó vắng mặt theo mặc định, vì vậy nếu bạn chưa có, hãy tạo nó và thêm các dòng set JAVA_HOME=... hoặc set JRE_HOME=... của bạn ở đó.

Run với JRE

Theo running.txt:

Biến JRE_HOME được sử dụng để xác định vị trí của một JRE. Biến số JAVA_HOME được sử dụng để xác định vị trí của một JDK.

Sử dụng JAVA_HOME cung cấp quyền truy cập vào một số tùy chọn khởi động bổ sung không được phép khi sử dụng JRE_HOME.

Nếu cả hai JRE_HOME và JAVA_HOME đều được chỉ định, JRE_HOME được sử dụng.

Vì vậy, để khởi động theo cách này, bạn sẽ cần những điều sau đây:

set "JAVA_HOME=" 
set "JRE_HOME=C:\Program Files (x86)\Java\jre7" 

Xoá biến JAVA_HOME là một failsafe, nhưng nó không thực sự cần thiết. Theo tài liệu, Tomcat sẽ thử sử dụng biến JRE trước.

Giải pháp cho phát hành trong Câu hỏi

Hãy lưu ý đặc biệt vị trí của dấu ngoặc kép. Bằng cách này, giữ toàn bộ chuỗi với nhau trong một biến, mà không bao gồm dấu ngoặc kép trong chính nội dung biến.

Ví dụ:

set %TEST%="hello" 
echo "%TEST%" 

Will ra ""hello"".

set "%TEST%=hello" 
echo "%TEST%" 

Đầu ra sẽ "hello".

Vì vậy, tập lệnh lô khởi động đã cố gắng sử dụng ""C:\Program Files (x86)\Java\jre7"", trong đó không gian thoát không đầu tiên nằm giữa "Chương trình" và "Tệp".

Như đã được chỉ ra, việc xóa dấu ngoặc kép (trong trường hợp cụ thể này ít nhất) sẽ hoạt động, nhưng rất nguy hiểm khi dựa vào đó. Thay vì chơi nó an toàn ngay từ đầu và quấn tên biến giá trị trong dấu ngoặc kép.

+1

Điều này hoạt động hoàn hảo! Ban đầu tôi đã đặt 'JAVA_HOME% =" C: \ Program Files \ path \ thành \ jdk "' theo [hướng dẫn] này (https://www.youtube.com/watch?v=gz1pnr7P8lY). Nhưng tôi đã xóa JAVA_HOME bằng 'set 'JAVA_HOME =" 'và chạy' set "JRE_HOME = C: \ Program Files \ path \ to \ jre" '. Đến từ * nix, điều này đã bắt đầu là một nỗi đau. Cảm ơn! – tmthyjames

+0

Câu trả lời hoàn hảo ... bắt đầu hoạt động – spt025

1
  • Trước tiên, hãy cài đặt java và định vị đường dẫn instalation.
  • Xác định đường dẫn cài đặt tomcat và tìm startup.bat trong \ bin
  • Mở khởi động.dơi và thêm bên dưới (ví dụ) dòng ngay sau setlocal và trước rem Guess CATALINA_HOME if not defined
:: JAVA 
set JAVA_HOME=D:\thushara_data\Java\jdk1.8.0_73 
set PATH=%JAVA_HOME%\bin;%PATH% 

Bây giờ cố gắng chạy lại startup.bat