Как мы можем установить Java classpath в сценарии оболочки? - PullRequest
0 голосов
/ 10 декабря 2018

Мне нужна помощь с этой концепцией.Я искал несколько тем в этом форуме, но ни одна не соответствовала моей проблеме.

Я пишу два класса Java и сценарий оболочки.Я заархивировал их в папку и отправил другому человеку, который не знает Java.Он просто распакует и запустит скрипт оболочки.

Человек извлечет код в любом месте своего компьютера.Поэтому теперь сценарий оболочки должен выполнить следующее.

  1. Проверить, правильно ли установлена ​​Java
  2. Если это так, задайте путь к классу java для папки, в которой присутствуют классы java.
  3. Проверьте версию Java.Это достигается в сценарии.Так что нет проблем
  4. Скомпилируйте и запустите.

Мой zip-файл будет содержать App.java, Message.java, MyCodeExecution.sh.

    #!/bin/bash

    export CLASSPATH=$CLASSPATH:.

    echo $CLASSPATH

    VER=`java -version 2>&1 | grep "java version" | awk '{print $3}' 
    | tr   -d \" | awk '{split($0, array, ".")} END{print array[2]}'`
    if [[ $VER -gt 6 ]]; then
        echo "Java version is greater than 1.6."
    else
        echo "Java version is lower than 1.6."
    fi

    javac App.java
    javac Message.java
    java App

Это мой код для сообщений и приложений. Java

  package com.demo;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;

    /**
     * This class creates two instances of same class and performs message
     * transmission.
     * 
     */
    public class App {
        final static String initTurn = "initiator";
        final static String receiverTurn = "receiver";



        public static void main(String[] args) {
            App app = new App();
            InputStreamReader r = new InputStreamReader(System.in); // Input reader for messages
            InputStreamReader totalMessages = new InputStreamReader(System.in); // Input reader to get total number of
                                                                                // messages
            BufferedReader br = null;
            Message initiator = new Message(); /* Instance for initiator who initiates the message */
            Message receiver = new Message(); /* Instance for receiver who receives and re-sends the message. */

            String initMessage = null; /* Message got from the initiator */
            String recvMessage = null; /* Message to be sent back to initiator by receiver */
            String turn = initTurn; /* Turn to send message by initiator or receiver. */
            try {

                /*
                 * This snippet is implemented to give option of sending n number of messages
                 * and receive it. User can choose to transmit total number of messages
                 */
                int c = 0;
                 System.out.println("How many messages do you wish to transmit? ");

                br = new BufferedReader(totalMessages);
                c = Integer.parseInt(br.readLine());

                /* br object is reset for receiving messages from user. */
                br = null;
                br = new BufferedReader(r);
                for (int counter = 1; counter <= c;) { /*
                                                         * Message transmission stops when initiator reach the transmission
                                                         * limit
                                                         */
                    if (initTurn.equals(turn)) {
                        System.out.println("\nInitiator... Please type your message:\n ");
                        if (counter == c) {
                             System.out.println("This would be the last message which you may sent and receive.\n");

                        }
                        /* Receiving message as input by initiator. */
                        initMessage = br.readLine();
                        turn = receiverTurn; /*
                                                 * turn is set to receiver that is transmission turn is now given to
                                                 * receiver.
                                                 */
                        initiator.setMessage(initMessage);
                    } else if (receiverTurn.equals(turn)) {
                        /* Receiver gets message from Initiator */
                        receiver.setMessage(initiator.getMessage());
                        recvMessage = receiver.getMessage();
                        /* Receiver re-sends the message to the initiator with the message counter. */
                         System.out.println("\nMessage received by Initiator from Receiver is: ' " +
                         recvMessage
                         + "'. Message counter " + counter);

                        if (counter == c) {
                            System.out.println("\nMessage transmission limit over. See you again.");
                        }
                        turn = initTurn; /*
                                             * turn is set to receiver that is transmission turn is now given to initiator.
                                             */
                        counter++;
                    }
                }

            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (br != null) {
                    try {
                        br.close();
                    } catch (IOException ie) {
                        ie.printStackTrace();
                    }
                }
                if (totalMessages != null) {
                    try {
                        totalMessages.close();
                    } catch (IOException ie) {
                        ie.printStackTrace();
                    }
                }
                if (r != null) {
                    try {
                        r.close();
                    } catch (IOException ie) {
                        ie.printStackTrace();
                    }
                }
            }

        }
    }

    class Message {

        String message;

        public String getMessage() {
            return message;
        }

        public void setMessage(String message) {
            this.message = message;
        }

    }

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете установить путь к классу к текущей папке, в вашем сценарии оболочки, например:
export CLASSPATH = $ CLASSPATH:.
Таким образом, он сможет найти класс Player в той же папке..

...