java-关于用Java调用dos,有些命令可以,有些就不行

问题描述

关于用Java调用dos,有些命令可以,有些就不行

我用swing做了一个窗体,可以输入dos命令,然后在文本域控件输出结果,像ping命令这些可以成功,但输入java.java -version这些就完全没反应

解决方案

看什么命令,java.java是不是在当前路径,要么添加到环境变量,要么带上完整路径。

解决方案二:

Java调用DOS命令
java调用Dos命令
java 调用DOS命令

解决方案三:

核心代码是这样
runtime.getruntime().exec(csd)//
csd
是获取的输入的命令字符串,

解决方案四:

package newMenu;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Color;
import java.awt.Font;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.swing.JSplitPane;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JTextPane;
import javax.swing.JLayeredPane;
import javax.swing.JScrollPane;

public class newView extends JFrame {
private JTextField textField;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                newView frame = new newView();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public newView() {
    setTitle("                                                                                                                   Mamager");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 791, 502);
    setLocationRelativeTo(null);
    getContentPane().setLayout(null);

    JLabel label = new JLabel("u8BF7u8F93u5165uFF1A");
    label.setBounds(108, 28, 54, 15);
    getContentPane().add(label);

    textField = new JTextField();
    textField.setColumns(10);
    textField.setBounds(154, 25, 403, 21);
    getContentPane().add(textField);

    final JTextArea textArea = new JTextArea(100,15);
    textArea.setBounds(53, 54, 682, 379);

    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setBounds(53, 54, 682, 379);
    getContentPane().add(scrollPane);
    scrollPane.setColumnHeaderView(textArea);

    JButton button = new JButton("u786Eu5B9A");
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            String command=textField.getText();
              Runtime r=Runtime.getRuntime();
              Process p = null;
            try {
                p = r.exec("cmd /c"+command);
                int ret = 1,res=0;
                do{
                    ret = p.waitFor();
                    res++;
                } while(ret == 1&&res<=200000);

                System.out.println("ret="+ret);
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();

            } catch (InterruptedException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
              BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
              StringBuffer sb=new StringBuffer();
              String inline;
             try {

                while(null!=(inline=br.readLine())){
                  System.out.println(inline);
                  textArea.append(inline+"
");
                  }
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } 

        }
    });
    button.setBounds(567, 24, 93, 23);
    getContentPane().add(button);

    JMenuBar menuBar = new JMenuBar();
    menuBar.setSize(new Dimension(0, 25));
    menuBar.setBackground(Color.WHITE);
    menuBar.setAutoscrolls(true);
    menuBar.setAlignmentY(Component.BOTTOM_ALIGNMENT);
    setJMenuBar(menuBar);

    JMenu mnMenu = new JMenu("menu1");
    menuBar.add(mnMenu);

    JMenuItem mntmItem = new JMenuItem("item1");
    mntmItem.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
        System.exit(0);
        }
    });
    mnMenu.add(mntmItem);

    JMenu mnMenu_1 = new JMenu("menu2");
    mnMenu_1.setBackground(Color.WHITE);
    menuBar.add(mnMenu_1);

    JMenuItem mntmItem_1 = new JMenuItem("item2");
    mnMenu_1.add(mntmItem_1);
}

}

时间: 2024-10-01 12:55:10

java-关于用Java调用dos,有些命令可以,有些就不行的相关文章

exec-java程序调用DOS命令有问题

问题描述 java程序调用DOS命令有问题 我在使用java运行一个dos命令时候出现了一个问题: 该dos命令见如下代码中的command字符串,将该字符串敲入命令行界面运行良好,其中dtm-win32是一个可执行程序,后面跟着的是这个程序的诸多参数.这个可执行程序通常需要运行20分钟左右. 我想在java程序中运行该可执行程序,但是出现一个奇怪的现象:java程序成功启动了该可执行程序,但过了几秒钟后,这个可执行程序就阻塞了,当我终止了java程序后,该可执行程序后恢复了运行,而且每次都是这

java-Java中调用dos命令,小白一只,求助

问题描述 Java中调用dos命令,小白一只,求助 一个jar包可以通过dos命令运行.现在想通过java运行.代码如下 public class Test { public static void main (String[] args) { String command="cmd Java JJ2KDecoder -i C:UsersAdministratorDesktopJAVA_JPEG2000JAVA_JPEG2000in_output6.j2c -o C:UsersAdministr

Java exec详解 - 调用系统命令以及进程

调用系统命令 执行系统命令相对来说比较容易,可以通过使用 Runtime 和 Process 两个类来执行.我们可以通过Process的getInputStream和getErrorStream两个方法获取到结果和错误信息的输入流,下面就是实例代码,改代码通过执行 ps -ef 命令来获取结果(执行在mac或者linux上) 1234567891011121314151617181920212223242526272829303132333435 package map; import java

java web项目如何调用.so文件?

问题描述 java web项目如何调用.so文件? 我这里有一个libhf_test.so文件,开始是放在android project里边的,调用什么的都没有问题.现在新加了一个需求:把这个libhf_test.so文件放到web project项目中 然后我就写了个小小的测试类 public class AppUtil{ static{ System.loadLibrary(""hf_test""); } //so文件中的native方法 public nati

Java多线程实现异步调用的方法_java

在JAVA平台,实现异步调用的角色有如下三个角色:调用者 提货单   真实数据 一个调用者在调用耗时操作,不能立即返回数据时,先返回一个提货单.然后在过一断时间后凭提货单来获取真正的数据. 去蛋糕店买蛋糕,不需要等蛋糕做出来(假设现做要很长时间),只需要领个提货单就可以了(去干别的事情),等到蛋糕做好了,再拿提货单取蛋糕就可以了. public class Main { public static void main(String[] args) { System.out.println("ma

[Java] 利用Axis库调用C#的Web Service

[Java] 利用Axis库调用C#的Web Service 编写者 日期 关键词 郑昀@ultrapower 2005-8-2 Java Web Service Axis C#   概述 试图从Java调用C#编写的Web Service,借用了王咏刚的wsCaller源代码中DynamicInvoker类. 开始不清楚DynamicInvoker类的portName的含义,望文生义,以为是8080之类的端口号,实际上是下面wsdl中的wsdl:port 节点的"name"属性值&q

实战php调用java类由java类读数据库完成相关操作(Inber Write)

数据|数据库 1 建立系统ODBC 数据源photo(本次使用的是Oracle 9i,详细配置如有不懂这处再和我联系)2 编译DataBaseConnection.java文件 将其编译文件放入到PHP支持的类文件目录中 package com.inberkong.util;/******************************************************* * Programe File :复件缓冲池DataBaseConnection.java * Creat  

实战 php调用java类由java类读数据库完成相关操作(Inber Write)

1 建立系统ODBC 数据源photo(本次使用的是Oracle 9i,详细配置如有不懂这处再和我联系)2 编译DataBaseConnection.java文件 将其编译文件放入到PHP支持的类文件目录中 package com.inberkong.util;/******************************************************* * Programe File :复件缓冲池DataBaseConnection.java * Creat    Date

C#调用DOS命令方法

C#调用DOS命令我想编一个汇编语言编辑器,但在调用masm.exe的时候,无法得到它的运行信息.代码如下: Process p = new Process(); p.StartInfo .WorkingDirectory ="e:\\"; p.StartInfo.FileName = "masm.exe"; p.StartInfo.Arguments="test.asm;"; p.StartInfo.UseShellExecute = fals