টমক্যাট জ্যাভাহোমকে চিনতে পারে না


15

আমি উবুন্টু 14.04 সার্ভার ইনস্টল করেছি, জেডি কে 1.8u5 এবং টমক্যাট 7 কে বের করেছি এবং নীচের প্রোফাইলে যুক্ত করেছি (আমি এটি অনুরূপ [অ-] ফলাফল সহ .bashrc এ যুক্ত করার চেষ্টা করেছি):

export JAVA_HOME=/opt/java/jdk1.8.0_05
export PATH=$PATH:$JAVA_HOME/bin

যখন আমি দৌড়ান echo $JAVA_HOMEআমি এর প্রত্যাশিত ফলাফল পাই /opt/java/jdk1.8.0_05। আমি java -versionজাভা থেকে চালাতে এবং সঠিক প্রতিক্রিয়া পেতে পারি। এ পর্যন্ত সব ঠিকই.

সুতরাং এখন আমি টমক্যাট (ক্যাটালিনা.শ চেষ্টা করেও) শুরু করার চেষ্টা করি এবং আমি নিম্নলিখিতটি পাই:

user@ubuntu:~$ sudo /opt/tomcat7/apache-tomcat-7.0.53/bin/startup.sh
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

কিন্তু ... আমি শুধু চেষ্টা করেছি echo $JAVA_HOMEএবং এটি কাজ করেছে?

উত্তর:


23

একটি সহায়তা পাঠ্য আছে catalina.sh। আমি এখানে এটি উদ্ধৃত করব:

#   Do not set the variables in this script. Instead put them into a script
#   setenv.sh in CATALINA_BASE/bin to keep your customizations separate.

#
#   JAVA_HOME       Must point at your Java Development Kit installation.
#                   Required to run the with the "debug" argument.

# Ensure that any user defined CLASSPATH variables are not used on startup,
# but allow them to be specified in setenv.sh, in rare case when it is needed.
CLASSPATH=

if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
  . "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
  . "$CATALINA_HOME/bin/setenv.sh"
fi

আপনি যখন tomcatব্যবহার শুরু করেন catalina.sh, তখন এটি ফাইলটির সন্ধান করে setenv.shএবং এটি উত্সাহ দেয়। এটা অনুসন্ধান করছে সে CATALINA_HOMEবা CATALINA_BASE

সুতরাং এর জন্য আরও ভাল উপায় নির্ধারণ JAVA_HOMEকরা tomcatহল:

  1. setenv.shফোল্ডারে নামের একটি স্ক্রিপ্ট তৈরি করুন CATALINA_BASE/bin, যদি এটি ইতিমধ্যে বিদ্যমান না থাকে।
  2. এই লাইনটি যুক্ত করুন setenv.sh

    export JAVA_HOME=/opt/java/jdk1.8.0_05
  3. এটি কার্যকর করা।


আপনার এই সমাধানটি কেন ব্যবহার করা উচিত:

স্ক্রিপ্টে পরিবেশের পরিবর্তনশীল সেট করা নিরাপদ। সর্বদা যথাসম্ভব স্থানীয়ভাবে ভেরিয়েবল সেট করার চেষ্টা করুন। ব্যবহার করবেন না চেষ্টা করুন /etc/environment, /etc/profileএবং অন্যদের যদি সত্যিই না প্রয়োজন Global Environment Variable। সেট JAVA_HOMEকরা setenv.shআপনাকে বিভিন্ন অ্যাপ্লিকেশন সহ বিভিন্ন টমক্যাটগুলি ব্যবহার করার ক্ষমতা দেয় যার বিভিন্ন সংস্করণের প্রয়োজন হয় java, তবে একজন ব্যবহারকারীর দ্বারা চলমান। অন্যান্য ব্যবহারকারীর পরিবেশ আপনার দ্বারা প্রভাবিত হবে না।


4

যেহেতু আপনি আপনার নিজের ব্যবহারকারীর জন্য পরিবেশ পরিবর্তনশীল সেট করেছেন এবং সুপারসুরের জন্য নয়, আপনার কাছে দুটি বিকল্প রয়েছে:

  1. আপনাকে -Eনিম্নলিখিতটি বিকল্পের সাহায্যে চলকটি রফতানি করতে হবে :

    sudo -E /opt/tomcat7/apache-tomcat-7.0.53/bin/startup.sh

    দ্রষ্টব্য যে কমান্ডটি চালনার সময় এটি সমস্ত পরিবেশের ভেরিয়েবল রফতানি করবে। আপনি যখন কমান্ডটি রুট হিসাবে চালাবেন তখন সাধারণ ব্যবহারকারীর পরিবেশ ছড়িয়ে যায় বলে এটি পছন্দ করা হয় না। এটি কাম্য নয়।

  2. রুটের.bashrc /etc/enviroment ফাইলটিতে চলকটি রফতানি করুন। একটি টার্মিনাল খুলুন এবং টাইপ করুন:

    sudo nano /etc/environment

    এবং আপনার প্রশাসনিক পাসওয়ার্ড লিখুন, এবং ফাইলের শেষে নিম্নলিখিত লাইনগুলি যুক্ত করুন:

    JAVA_HOME=/opt/java/jdk1.8.0_05
    PATH=$PATH:$JAVA_HOME/bin

    এবং তারপর

    source /etc/environment

    অথবা আপনার মেশিনটি পুনরায় চালু করুন এবং তারপরে আপনি যে কমান্ডটি ব্যবহার করছেন তা পুনরায় চেষ্টা করুন।


হালনাগাদ:

এই উত্তরটি দুটি পদক্ষেপ কেন কাজ করবে না, sudoপরিবেশটিকে পুনরায় সেট করবে এবং একটি সুরক্ষিত পথ সরবরাহ করবে সে জন্য দুটি হিসাবে ইঙ্গিত সরবরাহ করেছিল, তাই সমস্ত বৈশ্বিক চলক পুনরায় সেট করা হয়। একটি workaround ব্যবহার করা হবে

sudo su

এবং তারপরে কমান্ড কার্যকর করুন যা সেট পরিবেশের ভেরিয়েবলগুলি ব্যবহার করে।


1
ধন্যবাদ @ জোবিন - বিকল্প 1 কাজ করে তাই আমি আপনার উত্তরটিকে অগ্রাহ্য করেছি। আমি এখন বিকল্প 2 পরীক্ষা করব, যা আমার পছন্দসই সমাধান এবং এটি কার্যকর হলে আমি আপনার উত্তরটি গ্রহণ করব accept
ইসাপির

আপনার পরামর্শ অনুসারে আমি কমান্ডগুলি /root/.bashrcন্যানোর সাথে যুক্ত করেছি , তবে user@ubuntu:~$ source /root/.bashrcফলাফলগুলি কল করে -bash: /root/.bashrc: Permission deniedএবং এটি সুডো ফলন দিয়ে চেষ্টা করছি sudo: source: command not found। এই মুহুর্তে মূল কমান্ডটি পুনরায় চেষ্টা করা আমার পয়েন্ট 0 এ ফিরে আসে
ইসাপির

@ ইগাল: সমস্যাটি সমাধান করার জন্য আমার উত্তর সম্পাদনা করেছেন, আপনার sudo -iআগে আপনার আগে ব্যবহার করা উচিত source। যে ইশারা জন্য ধন্যবাদ।
জবিন

ঠিক আছে, নবাগত প্রশ্নগুলি ক্ষমা করুন, তবে আমি sudo -iএকবার উত্স হিসাবে পরিচিত না হলে কীভাবে প্রস্থান করব ?
বাহির

@ ইগাল: কেবল Ctrl + d বা টাইপ করুন exit
জবিন

0

সমাধান আমি খুঁজছিলাম হয় /etc/environmentযা এ উল্লিখিত EnvironmentVariables স্ক্রিপ্ট প্রক্রিয়া না এবং ভেরিয়েবল প্রসারিত না, তাই (নিম্নলিখিত যোগ ছাড়া রপ্তানি) হয়নি কৌতুক:

JAVA_HOME=/opt/java/jdk1.8.0_05

তারপরে পরিবর্তনগুলি প্রভাবিত হওয়ার জন্য আমি সিস্টেমটি পুনরায় বুট করেছি।


0

আমি tomcat7.serviceস্ক্রিপ্টে জাভা_হোমকে যুক্ত করেছি কারণ setenv.shএটি উত্সাহিত হয়নিcatalina.sh

পদক্ষেপ:

1.আপনার tomcat7 পরিষেবা স্ক্রিপ্ট ফাইল

sudo gedit /etc/init.d/tomcat7

২.সেট জাভা_হোম

.
.
.
JAVA_HOME=/usr/lib/jvm/java-8-oracle

# Directory where the Tomcat 6 binary distribution resides
CATALINA_HOME=/usr/share/$NAME

# Directory for per-instance configuration files and webapps
CATALINA_BASE=/var/lib/$NAME

# Use the Java security manager? (yes/no)
TOMCAT7_SECURITY=no

3. স্টার্ট tomcat7 পরিষেবা

sudo service tomcat7 status

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.