繁体   English   中英

如何通过批处理文件执行Java

[英]How to execute a java through batch file

我正在编写一个用于在双击批处理文件后从命令提示符中读取文本的类,但是当我打开它时,由于NoClassDefinition发现错误提示任何人都可以解决此问题,我将.class文件放入一个TCPVisy文件夹。 下面是我在这里放置的代码

package com;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class TCPVisyMode {

    public static String ip;
    public static String port;

    public TCPVisyMode() {

    }

    public static void main(String[] args) throws IOException {

        TCPVisyMode visyMode = new TCPVisyMode();
        DataInputStream dis
                = new DataInputStream(visyMode.getClass().getResourceAsStream("CTASSimulator.config"));
        String strLine;
        while ((strLine = dis.readLine()) != null) {

            String[] keyValues = strLine.split("=");
            if (keyValues[0].equalsIgnoreCase("EQPTINFCLIENTIP")) {
                ip = keyValues[1];
                System.out.println("IP is " + ip);
            } else if (keyValues[0].equalsIgnoreCase("EQPTINFSERVERPORT")) {
                port = keyValues[1];
                System.out.println("Port is " + port);
            }

        }

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        Socket clientsoc = null;
        BufferedReader responsereader = null;
        DataOutputStream serverstream = null;
        VisyReader reader = null;
        String tempchar = "";
        String inputstring = "";

        while (true) {

            try {

                if (clientsoc == null) {
                    clientsoc = new Socket(ip, Integer.parseInt(port));
                    //clientsoc = new Socket(ip,port);
                    responsereader
                            = new BufferedReader(new InputStreamReader(clientsoc.getInputStream()));
                    serverstream = new DataOutputStream(clientsoc.getOutputStream());
                    reader = new VisyReader(responsereader);
                    reader.setName("VisyReader");
                    reader.start();
                }

                if (clientsoc != null) {
                    tempchar = br.readLine();

                    inputstring = inputstring + tempchar;
                    if (inputstring.startsWith("exit>>>")) {
                        serverstream.close();
                        br.close();
                        clientsoc.close();
                        break;
                    }

                    if (inputstring.endsWith(">>>")) {
                        inputstring = inputstring.replaceAll(">>>", "");
                        serverstream.write(new byte[]{31, 65});
                        serverstream.write(inputstring.getBytes());
                        serverstream.write(new byte[]{-1});

                        serverstream.flush();
                        inputstring = "";

                    }
                } else {
                    try {
                        java.lang.Thread.sleep(2000);
                    } catch (InterruptedException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }
            } catch (Exception e) {
                    // TODO Auto-generated catch block

                try {

                    serverstream.close();
                    serverstream = null;
                    clientsoc.close();
                    clientsoc = null;
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    //  LogWriter.LogErrorMessage(e1);
                    clientsoc = null;
                    serverstream = null;

                }

                try {
                    java.lang.Thread.sleep(2000);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        }
    }
}

我将命令放在批处理文件中,位于TCPVisit文件夹.class文件的内部

java -Xms512m -Xmx1024m -Dsun.lang.ClassLoader.allowArraySyntax=true -cp . TCPVisit/TCPVisyMode
pause

您的类TCPVisyMode在com包下(在代码段的第一行中声明。

因此,首先,您的类文件必须位于TCPVisit文件夹下的/ com目录下。

之后,您必须修改脚本以:

java -Xms512m -Xmx1024m -Dsun.lang.ClassLoader.allowArraySyntax=true -cp ./TCPVisit com.TCPVisyMode
pause

请注意,-cp选项指向TCPVisit文件夹,并且主类名是完全限定的(完整的包和类名)。

有关Java命令的更多信息,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM