to:ddadoris(马加爵) ,不行啊!我把TestCallC.java里的 public class TestCallC { public TestCallC() 改为 public class TestCallC { public TestCallC() { } public void TestCallC1() 编译可以通过, .jsp里删掉那句话后, 添加 <%@ page import = "test.TestCallC" %> <% TestCallC c = new TestCallC();%> <%=TestCallC.TestCallC1()%> 但在网页里还是出错,出错信息为: ==================== Generated servlet error: [javac] Compiling 1 source fileC:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\_\jxyh\yhjx_jsp.java:87: non-static method TestCallC1() cannot be referenced from a static context out.print(TestCallC.TestCallC1()); ^ An error occurred at line: 43 in the jsp file: /jxyh/yhjx.jspGenerated servlet error: C:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\_\jxyh\yhjx_jsp.java:87: 'void' type not allowed here out.print(TestCallC.TestCallC1()); ^ 2 errors ================== 请问是怎么回事阿???? 我快郁闷死了,头都疼了!
public void call(){ Runtime r = Runtime.getRuntime() ; Process p = null ; try{ p = r.exec("notepad");//修改为你的a.exe的绝对路径 //p.waitFor() ; //注释她可以在记事本关闭前让浏览器完成 }catch( Exception e ){ System.out.println("exception when run notedpad."); }
}//end call() }//:~
应用时写成Servlet最好不过了。
to:srx(钻石史老三) 先感谢您的帮忙! 我有几点疑问: 1、上面的方法是把a.exe放在服务器上还是客户端?如果放在服务器上,还用修改path吗? 2、callExe2.jsp是哪个文件?起什么作用? 3、CallExe.java里的p = r.exec("notepad");//修改为你的a.exe的绝对路径 是把notepad定意成 String notepad = "cmd.exe /c start c:/Program Files/Apache Group/Tomcat4.1/webapps/ROOT/jxyh/a.exe "; 吗? 4、System.out.println("exception when run notedpad."); 中的notedpad是不是应该写成notepad?但notepad是字符串,这里是不是应该写成 System.out.println("exception when run ‘notedpad’.");呢? 请指教!万分感谢!
{
try{
String command = "cmd.exe /c start c:/snort/bin/a.exe ";
Process child = Runtime.getRuntime().exec(command);
}
catch(IOException e)
{
;
}
}
小妹学识浅薄,看不懂阿!
本地资源的访问要借助于ActiveX。
先用Delphi做一个类,再通过ActiveX封装该类。最后发布ActiveX,并在网页内调用ActiveX.
在你的jsp里调用
a.TestCallC()
就可以了。
把方法里的c:/snort/bin/a.exe 改成你的exe的路迳,c?
cmd.exe /c start C:/resin/bin/httpd.exe
可以运行<%@ page language="java" contentType="text/html; charset=gb2312" %>
<%@ page import="java.util.*,java.lang.*,java.io.*" %><% try{
String command = "cmd.exe /c start C:/resin/bin/httpd.exe";
Process child =Runtime.getRuntime().exec(command);
out.print("OK");
}
catch(IOException e)
{out.print(e.getMessage());
}
%>
输出ok其他没什末反映,大家继续讨论,帮忙指点啊
可以到网上先找些jni的文档学习一下
又不象是servlet还返回给客户浏览器一个txt/html
1、是否先要在jbuilder里建立一个工程,编写一个bean,执行后产生.class,和.java文件,再用jsp调用呢?
2、这个bean放在哪?和调用他的jsp文件的各自的目录应该怎么设置呢?
还需要其他配置么?
谢谢楼上的各位关注。
lvchuanxi(小小^_^) 能给我一份吗?
我已经试了一天了,还是不行,郁闷阿!
快疯掉了!
我的想法是在网页上有个按纽或者类似链接的东东,点击即可打开delphi的a.exe程序,
a.exe有自己的界面。
我试了上面的方法,但是不行啊!
我的bean文件是TestCallC.java:
public class TestCallC { public TestCallC()
{
try{
String command = "cmd.exe /c start c:/Program Files/Apache Group/Tomcat 4.1/webapps/ROOT/jxyh/a.exe ";
Process child = Runtime.getRuntime().exec(command);
}
catch(IOException e)
{ ;
}
}
}===========
编译后有TestCallC.class文件:
package test;public class TestCallC { // Constructors
public TestCallC() { }
}
===========
我的调用bean的jsp为
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page import = "java.sql.*" %>
<html>
<head>
.........
<body bgcolor="DFE8FD" ><center>
<jsp:useBean id='clock' scope='page' class='test.TestCallC' type="test.TestCallC" />
<font color="#FF9933" size="6" face="隶书">优化检修票</font>
</center>
<form>
<p><center><a href="a.exe" class="qx" size="+4" face= "隶书">进入</a></center></p>
<%=TestCallC.TestCallC()%>
</center>
</form>
</body>
</html>
我的调用语句好像写的不对,可是该怎么写阿?!!
我把TestCallC.class,TestCallC.java放在Tomcat 4.1\webapps\ROOT\WEB-INF\classes\test文件夹下呜呜。。
该怎么办啊???
求大家帮帮我吧!
<%@ page import = "test.TestCallC" %>然后
<%
TestCallC c = new TestCallC();
%>删掉你的<jsp:useBean id='clock' scope='page' class='test.TestCallC' type="test.TestCallC" />另外不要把你的类名跟方法名写成一样,本来是用做构造器的,不知道会不会出问题,你先试试
public class TestCallC {
public TestCallC()
改为
public class TestCallC {
public TestCallC() {
}
public void TestCallC1()
编译可以通过,
.jsp里删掉那句话后,
添加 <%@ page import = "test.TestCallC" %>
<% TestCallC c = new TestCallC();%>
<%=TestCallC.TestCallC1()%>
但在网页里还是出错,出错信息为:
====================
Generated servlet error:
[javac] Compiling 1 source fileC:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\_\jxyh\yhjx_jsp.java:87: non-static method TestCallC1() cannot be referenced from a static context
out.print(TestCallC.TestCallC1());
^
An error occurred at line: 43 in the jsp file: /jxyh/yhjx.jspGenerated servlet error:
C:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\_\jxyh\yhjx_jsp.java:87: 'void' type not allowed here
out.print(TestCallC.TestCallC1());
^
2 errors
==================
请问是怎么回事阿????
我快郁闷死了,头都疼了!
改成
<%c.TestCallC1();%>
1,你的优化程序在服务器上,只需要写个
<form action="call.jsp"><input type="submit" name="优化">
</form>
然后把你的a.exe放在你服务器的环境变量path下面,(例如system32)
call.jsp
<%@ page language="java"%>
<%
Runtime r = Runtime.getRuntime() ;
Process p = null ;
try{
p = r.exec("a.exe");
p.waitFor();
}catch(Exception e){
System.out.println("exception e");
}
%>
就可以了
2,如果你的a.exe放在客户端,那么只好用applet的init()方法里放上
Runtime r = Runtime.getRuntime() ;
Process p = null ;
try{
p = r.exec("a.exe");
p.waitFor();
}catch(Exception e){
System.out.println("exception e");
}
代码,然后把applet打包,做数字签名。如果你感兴趣,我可以再回答。
不过我觉得,上面的代码回答你的问题就足够了。
不过我试了,不行啊!
出错为
--------------
org.apache.jasper.JasperException: test.TestCallC.TestCallC1()V
..........
javax.servlet.ServletException: test.TestCallC.TestCallC1()V-------------
其中TestCallC为类名,TestCallC1为方法名。
请指教。谢谢您了!
to: srx(钻石史老三),我试了你的第一个方法,
在path下添加a.exe,
具体为path:%SystemRoot%\system32\a.exe
并把a.exe考到了WINNT\system32下,
点击链接call.jsp,该文件完全拷贝你上面给的代码;
可是程序的进度条走到一半就不走了,没有任何反应。
我想问你的
<form action="call.jsp"><input type="submit" name="优化">
</form>
有用吗?放在哪?
这种方式在客户端能调用并执行a.exe吗?对于第二种方法,能说得再详细写吗?我的目的是想把a.exe放到服务器上,但是在客户端可以调用并执行,整个程序的运行都在服务器上,客户端只是发出执行命令,输入数据,并能看到结果。多谢赐教!感激涕零!
全部文件如下;调用javabean的.jsp文件是yhjx.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page import = "java.sql.*" %>
<html>
<head>
<title>ww</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<%@ page contentType="text/html;charset=gb2312" %>
<% request.setCharacterEncoding("GB2312");%>
</head>
<script language="JavaScript">
function reshow()
{}
</script>
<body bgcolor="DFE8FD" > <%@ page import = "test.TestCallC" %>
<% TestCallC c = new TestCallC();%>
<%c.TestCallC1();%>
</body>
</html>在ROOT\WEB-INF\classes\test里的TestCallC.java和TestCallC.class
分别如下:
TestCallC.java内容如下:
-----
package test;import java.io.IOException;/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/public class TestCallC {
public TestCallC() {
}
public void TestCallC1()
{
try{
String command = "cmd.exe /c start c:/Program Files/Apache Group/Tomcat 4.1/webapps/ROOT/jxyh/a.exe ";
Process child = Runtime.getRuntime().exec(command);
}
catch(IOException e)
{ ;
}
--------TestCallC.class文件内容如下
---------
// JBuilder API Decompiler stub source generated from class file
// 2004-3-23
// -- implementation of methods is not availablepackage test;public class TestCallC { // Constructors
public TestCallC() { } // Methods
public void TestCallC1() { }
}---------都在这了,请问过路的高手们,到底该怎么用啊?帮帮忙吧!
callExe.jsp
<%@ page language="java" import="CallExe;"%>
<jsp:useBean id="mycall" class="CallExe" method="post"/><form action="callExe2.jsp" method="post">
<input type="submit" name="s" value="优化">
</form>
<%
if( request.getMethod().equalsIgnoreCase("post")){
mycall.call();
}
%>CallExe.java
public class CallExe{
public void call(){
Runtime r = Runtime.getRuntime() ;
Process p = null ;
try{
p = r.exec("notepad");//修改为你的a.exe的绝对路径
//p.waitFor() ; //注释她可以在记事本关闭前让浏览器完成
}catch( Exception e ){
System.out.println("exception when run notedpad.");
}
}//end call()
}//:~
先感谢您的帮忙!
我有几点疑问:
1、上面的方法是把a.exe放在服务器上还是客户端?如果放在服务器上,还用修改path吗?
2、callExe2.jsp是哪个文件?起什么作用?
3、CallExe.java里的p = r.exec("notepad");//修改为你的a.exe的绝对路径
是把notepad定意成
String notepad = "cmd.exe /c start c:/Program Files/Apache Group/Tomcat4.1/webapps/ROOT/jxyh/a.exe "; 吗?
4、System.out.println("exception when run notedpad.");
中的notedpad是不是应该写成notepad?但notepad是字符串,这里是不是应该写成
System.out.println("exception when run ‘notedpad’.");呢?
请指教!万分感谢!
notepad是一个可执行文件 = notepad.exe ,是windows自带的记事本程序。
你执行后看到记事本打开了,就对了。
=================================下面是你的问题:
a.exe是否加到%path%里无所谓,如果不加,你可以写绝对路径那样调用。就象下面的
代码:如果a.exe加到了环境变量%path%里,在bean里就直接写p = r.exec("a.exe");
两者差不多。修改了一下:
---------------- callExe.jsp --------------------------
<%@ page language="java" import="CallExe;"%>
<jsp:useBean id="mycall" class="CallExe" method="post"/><form action="callExe.jsp" method="post">
<input type="submit" name="s" value="优化">
</form>
<%
if( request.getMethod().equalsIgnoreCase("post")){
mycall.call();
}
%>----------- CallExe.java ---------------------
public class CallExe{
public void call(){
Runtime r = Runtime.getRuntime() ;
Process p = null ;
try{
p = r.exec("c:/a.exe");
}catch( Exception e ){
}
}//end call()
}//:~
谢谢大侠,我按你的话作了,编译了 CallExe.java ,并生成 CallExe.class,将这两个文件放到ROOT\WEB-INF\classes\call 文件夹里,把callExe.jsp 放到ROOT里,但调用callExe.jsp 时出现错误如下:
-------------
org.apache.jasper.JasperException: /jxyh/callExe.jsp(40,0) UseBean: Invalid attribute, method--------------
好像是没有找到方法,我以前测试jsp调用javabean时文件就是这么放的,不知是哪里错了?
能帮帮我吗?
谢谢