脚本的运行结果总结
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.InputStreamReader;
importjava.util.ArrayList;
publicclassShell{
publicstaticArrayList<String>command(finalStringcmdline,
finalStringdirectory){
try{
Processprocess=
newProcessBuilder(newString[]{"bash","-c",cmdline})
.redirectErrorStream(true)
.directory(newFile(directory))
.start();
ArrayList<String>output=newArrayList<String>();
BufferedReaderbr=newBufferedReader(
newInputStreamReader(process.getInputStream()));
Stringline=null;
while((line=br.readLine())!=null)
output.add(line);
if(0!=process.waitFor())
returnnull;
returnoutput;
}catch(Exceptione){
returnnull;
}
}
publicstaticvoidmain(String[]args){
test("whichbash");
test("find.-typef-printf'%T@\\t%p\\n'"
+"|sort-n|cut-f2-|"
+"sed-e's//\\\\/g'|xargsls-halt");
}
staticvoidtest(Stringcmdline){
ArrayList<String>output=command(cmdline,".");
if(null==output)
System.out.println(" COMMANDFAILED:"+cmdline);
else
for(Stringline:output)
System.out.println(line);
}
}
② 脚本发生错误怎么解决 当前页的脚本发生错误的解决方法小结
那么下面编辑就为大家简单的介绍下 脚本发生错误的一些原因与可能情况:
1、第一种 页面中的脚本因为技术人员没有很好的处理好代码的兼容性或一些细节没有处理到,导致页面错误。
但有时候确实不影响使用,这类错误就需要程序开发人员来解决。
2、第二种情况,因为网速较慢,导致后面的执行无法继续进行导致页面提示错误,这种情况刷新下,页面加载正常了即可解决问题。
3、可能是客户端安装了一些软件或浏览器安装了一些插件也会导致页面错误,那么这种情况就比较麻烦了,一般情况我们都是重新安装下IE。
如果大家有什么疑问,可以参考下面的方法解决:
老黄▄︻┳═一 的 电脑老出现 “当前页的脚本发生错误”怎么办?
按一下几种方法解决:
一
“脚本错误”形成的原因是因为访问者所使用的浏览器不能完全支持页面里的脚本,而且出现频率并不低。遇到“脚本错误”时一般会弹出一个非常难看的脚本运行错误警告窗口,而事实上,脚本错误并不会影响网站浏览,因此这一警告可谓多此一举。要关闭警告则可以在浏览器的工具菜单选择Internet选项,然后单击高级属性页。进入到浏览标签,并选中“禁止脚本调试”复选框,以后你就不会再收到这些警告了
晕,我那样解决就ok了。那再给你多点参考吧!
IE中的脚本错误
某个网页可能会无法正常显示或工作,您可能会收到一条类似于以下之一的错误消息:
该网页上的问题可能使其无法正常显示或功能不正常。以后,双击显示在状态栏中的警告图标,就可以显示上述消息。
如果您单击“显示详细信息”,则会显示类似于下面的错误详细信息:
Line:4
Char:1
Error:Object doesn't support this property or method.
Code:0
A Runtime Error has occured.
Do you wish to Debug?
Line:4
Error:Object doesn't support this property or method.
下面的警告消息也可能出现在 Microsoft Internet Explorer“状态”栏中:
已完毕,但网页上有错误
出现此问题是因为该网页的 HTML 源代码不能使用客户端脚本(如 Microsoft JScript 或 Visual basic 脚本)正确工作。发生此问题可能是因为以下原因之一: ? 网页的 HTML 源代码中有问题。
? 您的计算机或网络上阻止了活动脚本、ActiveX 控件或 Java 小程序。Internet Explorer 或另外一种程序(如防病毒程序或防火墙)可以配置为阻止活动脚本、ActiveX 控件或 Java 小程序
? 防病毒软件配置为扫描您的“临时 Internet 文件”或“已下载的程序文件”文件夹。
? 您计算机上的脚本引擎损坏或过时。
? 您计算机上的 Internet 相关文件夹损坏。
? 您的视频卡驱动程序已损坏或者已过时。
? 您计算机上的 DirectX 组件损坏或过时。
注意:服务器端脚本 -- 如 Active Server pages (ASp) 中的 Visual basic 脚本 -- 运行在 Web 服务器上。因服务器端脚本故障而发生的脚本错误不在 Internet Explorer 中生成错误消息,但也可能会创建一个不能正确显示或工作的网页。本文中的故障排除信息适用于服务器端脚本错误。如果您怀疑服务器端脚本有问题,请与 Web 服务器的管理员联系。
解决方案
使用本文中的故障排除方法时要按它们出现的顺序进行。在您完成一个故障排除部分后,请进行测试以确定是否仍发生此脚本错误。如果问题已解决,则不必继续下一部分。如果问题未解决,则继续执行下一部分。
从另一个用户帐户、另一个浏览器和另一台计算机测试网页
如果问题只在您查看一个或两个网页时发生,则从另一个用户帐户、另一个浏览器或另一台计算机查看这些网页,以确定问题是否依然存在。如果脚本错误依然存在,则可能是网页的编写有问题。请与网站管理员或内容开发者联系,告诉他们网页存在的问题。如果从另一个用户帐户使用网页时脚本错误未发生,则问题可能是您的用户配置文件的文件或设置造成的。如果在从另一个浏览器或另一台计算机使用网页时脚本错误未发生,则继续进行故障排除操作。
确认活动脚本、ActiveX 和 Java 未被阻止
确认您计算机上的 Internet Explorer 或另外一种程序(如防病毒程序或防火墙)未配置为阻止活动脚本、ActiveX 控件或 Java 小程序。在 Internet Explorer 的“高”安全级别,活动脚本、ActiveX 控件和 Java 小程序被关闭。默认情况下,Internet Explorer 6 和某些 Internet Explorer 5.x 版本针对受限站点区域使用“高”安全级别。默认情况下,Microsoft Windows Server 2003 针对受限站点区域和 Internet 区域使用“高”安全级别。如要为当前网页重置 Internet Explorer 安全设置,请按照下列步骤操作:1. 启动 Internet Explorer。
2. 在“工具”菜单上,单击“Internet 选项”。
3. 在“Internet 选项”对话框中,单击“安全”。
4. 单击“默认级别”。
5. 单击“确定”。
请参见您使用的防病毒程序或防火墙的文档资料,以确定如何打开脚本、ActiveX 和 Java 小程序。
确认您的防病毒程序未设置为扫描“临时 Internet 文件”或“已下载的程序文件”文件夹
请参见您使用的防病毒程序的文档资料,以确定如何防止该程序扫描“临时 Internet 文件”或“已下载的程序文件”文件夹。
删除所有临时的 Internet 相关文件
从您的计算机中删除所有临时的 Internet 相关文件。为此,请按照下列步骤操作:1. 启动 Internet Explorer。
2. 在“工具”菜单上,单击“Internet 选项”。
3. 单击“常规”选项卡。
4. 在“Internet 临时文件”下,单击“设置”。
5. 单击“删除文件”。
6. 单击“确定”。
7. 单击“删除 Cookies”。
8. 单击“确定”。
9. 在“历史记录”下,单击“清除历史记录”,然后单击“是”。
10. 单击“确定”。
二
旧版本的 IE (IE 7.0 为最新版本) 有一些系统漏洞,这些漏洞往往被一些恶意代码利用。安装流氓软件,弹出广告窗口等等。
建议要么升级到最新版本的 ie,要么换一个更安全的浏览器。
firefox 是一个更安全,更快速,更稳定的浏览器。
firefox 浏览器可以屏蔽各种恶意代码,弹窗广告。
IBM 要求所有的员工是使用 firefox 浏览器,这样为了保证电脑的数据安全。
Google 对 firefox 浏览器做了一些优化,速度比 ie 提高了 30%.
可以到这里免费下载体验一下:
/firefox.php
祝你好运!
三 是你的IE的设置问题 打开IE 单击“工具”在下拉菜单中选“internet选项”在“高级”中找到“显示每个脚本错误的通知”去掉前面的勾,再在两个”禁用脚本调试”前 打勾 就可以了.不行就换个浏览器试试!maxthon(遨游),FIREFOX(火狐),都不错的!而且FIREFOX(火狐)是非IE内核的,这种情况应该都可以解决! 或者把机器重新启动一下试试.
四 是网页的问题,不是你的电脑问题,想去掉就打开“internet选项”在“高级”中找到“显示每个脚本错误的通知”去掉前面的勾,再在”禁用脚本调试”前打勾。OK!
五 点浏览器的 工具,internet选项 然后删除文件,删除cookies.
然后,点 开始→运行 :输入 regsvr32 jscript.dll 后选择“确定”。
再 点 开始→运行: 再次输入 regsvr32 vbscript.dll 选择“确定”。
弄完后,重新启动,登陆即可
六重装IE 6.0
IE 6.0的重装有两种方法:
方法1:打开“注册表编辑器”,找到[hkey_local_ machine\software\microsoft\active setup\installed components\{89820200-ecbd-11cf-8b85-00aa005b4383}],将isinstalled的dword值改为0就可以了。
方法2:放入WindowsXP安装盘,在“开始→运行”窗口键入“rundll32.exe setupapi,installhinfsection defaultinstall 132 %windir%\inf\ie.inf”。
当前页脚本发生错误,缺少对象.代码:0..解决方法`
此贴于2010.8.31更新
IE中的脚本错误
某个网页可能会无法正常显示或工作,您可能会收到一条类似于以下之一的错误消息:
该网页上的问题可能使其无法正常显示或功能不正常。以后,双击显示在状态栏中的警告图标,就可以显示上述消息。
如果您单击“显示详细信息”,则会显示类似于下面的错误详细信息:
Line:4
Char:1
Error:Object doesn't support this property or method.
Code:0
URL:
A Runtime Error has occured.
Do you wish to Debug?
Line:4
Error:Object doesn't support this property or method.
下面的警告消息也可能出现在 Microsoft Internet Explorer“状态”栏中:
已完毕,但网页上有错误
出现此问题是因为该网页的 HTML 源代码不能使用客户端脚本(如 Microsoft Jscripq 或 Visual basic 脚本)正确工作。发生此问题可能是因为以下原因之一: • 网页的 HTML 源代码中有问题。
• 您的计算机或网络上阻止了活动脚本、ActiveX 控件或 Java 小程序。Internet Explorer 或另外一种程序(如防病毒程序或防火墙)可以配置为阻止活动脚本、ActiveX 控件或 Java 小程序
• 防病毒软件配置为扫描您的“临时 Internet 文件”或“已下载的程序文件”文件夹。
• 您计算机上的脚本引擎损坏或过时。
• 您计算机上的 Internet 相关文件夹损坏。
• 您的视频卡驱动程序已损坏或者已过时。
• 您计算机上的 DirectX 组件损坏或过时。
注意:服务器端脚本 -- 如 Active Server pages (ASp) 中的 Visual basic 脚本 -- 运行在 Web 服务器上。因服务器端脚本故障而发生的脚本错误不在 Internet Explorer 中生成错误消息,但也可能会创建一个不能正确显示或工作的网页。本文中的故障排除信息适用于服务器端脚本错误。如果您怀疑服务器端脚本有问题,请与 Web 服务器的管理员联系。
解决方案
使用本文中的故障排除方法时要按它们出现的顺序进行。在您完成一个故障排除部分后,请进行测试以确定是否仍发生此脚本错误。如果问题已解决,则不必继续下一部分。如果问题未解决,则继续执行下一部分。
从另一个用户帐户、另一个浏览器和另一台计算机测试网页
如果问题只在您查看一个或两个网页时发生,则从另一个用户帐户、另一个浏览器或另一台计算机查看这些网页,以确定问题是否依然存在。如果脚本错误依然存在,则可能是网页的编写有问题。请与网站管理员或内容开发者联系,告诉他们网页存在的问题。如果从另一个用户帐户使用网页时脚本错误未发生,则问题可能是您的用户配置文件的文件或设置造成的。如果在从另一个浏览器或另一台计算机使用网页时脚本错误未发生,则继续进行故障排除操作。
确认活动脚本、ActiveX 和 Java 未被阻止
确认您计算机上的 Internet Explorer 或另外一种程序(如防病毒程序或防火墙)未配置为阻止活动脚本、ActiveX 控件或 Java 小程序。在 Internet Explorer 的“高”安全级别,活动脚本、ActiveX 控件和 Java 小程序被关闭。默认情况下,Internet Explorer 6 和某些 Internet Explorer 5.x 版本针对受限站点区域使用“高”安全级别。默认情况下,Microsoft Windows Server 2003 针对受限站点区域和 Internet 区域使用“高”安全级别。如要为当前网页重置 Internet Explorer 安全设置,请按照下列步骤操作:1. 启动 Internet Explorer。
2. 在“工具”菜单上,单击“Internet 选项”。
3. 在“Internet 选项”对话框中,单击“安全”。
4. 单击“默认级别”。
5. 单击“确定”。
请参见您使用的防病毒程序或防火墙的文档资料,以确定如何打开脚本、ActiveX 和 Java 小程序。
确认您的防病毒程序未设置为扫描“临时 Internet 文件”或“已下载的程序文件”文件夹
请参见您使用的防病毒程序的文档资料,以确定如何防止该程序扫描“临时 Internet 文件”或“已下载的程序文件”文件夹。
删除所有临时的 Internet 相关文件
从您的计算机中删除所有临时的 Internet 相关文件。为此,请按照下列步骤操作:1. 启动 Internet Explorer。
2. 在“工具”菜单上,单击“Internet 选项”。
3. 单击“常规”选项卡。
4. 在“Internet 临时文件”下,单击“设置”。
5. 单击“删除文件”。
6. 单击“确定”。
7. 单击“删除 Cookies”。
8. 单击“确定”。
9. 在“历史记录”下,单击“清除历史记录”,然后单击“是”。
10. 单击“确定”。
③ 怎么通过java去调用并执行shell脚本以及问题总结
对于第一个问题:java抓取,并且把结果打包。那么比较直接的做法就是,java接收各种消息(db,metaq等等),然后借助于jstorm集群进行调度和抓取。
最后把抓取的结果保存到一个文件中,并且通过调用shell打包, 回传。 也许有同学会问,
为什么不直接把java调用odps直接保存文件,答案是,我们的集群不是hz集群,直接上传odps速度很有问题,因此先打包比较合适。(这里不纠结设计了,我们回到正题)
java调用shell的方法
通过ProcessBuilder进行调度
这种方法比较直观,而且参数的设置也比较方便, 比如我在实践中的代码(我隐藏了部分业务代码):
ProcessBuilderpb = new ProcessBuilder("./" + RUNNING_SHELL_FILE, param1,
param2, param3);
pb.directory(new File(SHELL_FILE_DIR));
int runningStatus = 0;
String s = null;
try {
Process p = pb.start();
try {
runningStatus = p.waitFor();
} catch (InterruptedException e) {
}
} catch (IOException e) {
}
if (runningStatus != 0) {
}
return;
这里有必要解释一下几个参数:
RUNNING_SHELL_FILE:要运行的脚本
SHELL_FILE_DIR:要运行的脚本所在的目录; 当然你也可以把要运行的脚本写成全路径。
runningStatus:运行状态,0标识正常。 详细可以看java文档。
param1, param2, param3:可以在RUNNING_SHELL_FILE脚本中直接通过1,2,$3分别拿到的参数。
直接通过系统Runtime执行shell
这个方法比较暴力,也比较常用, 代码如下:
p = Runtime.getRuntime().exec(SHELL_FILE_DIR + RUNNING_SHELL_FILE + " "+param1+" "+param2+" "+param3);
p.waitFor();
我们发现,通过Runtime的方式并没有builder那么方便,特别是参数方面,必须自己加空格分开,因为exec会把整个字符串作为shell运行。
可能存在的问题以及解决方法
如果你觉得通过上面就能满足你的需求,那么可能是要碰壁了。你会遇到以下情况。
没权限运行
这个情况我们团队的朱东方就遇到了, 在做DTS迁移的过程中,要执行包里面的shell脚本, 解压出来了之后,发现执行不了。 那么就按照上面的方法授权吧
java进行一直等待shell返回
这个问题估计更加经常遇到。 原因是, shell脚本中有echo或者print输出, 导致缓冲区被用完了! 为了避免这种情况, 一定要把缓冲区读一下, 好处就是,可以对shell的具体运行状态进行log出来。 比如上面我的例子中我会变成:
ProcessBuilderpb = new ProcessBuilder("./" + RUNNING_SHELL_FILE, keyword.trim(),
taskId.toString(), fileName);
pb.directory(new File(CASPERJS_FILE_DIR));
int runningStatus = 0;
String s = null;
try {
Process p = pb.start();
BufferedReaderstdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReaderstdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((s = stdInput.readLine()) != null) {
LOG.error(s);
}
while ((s = stdError.readLine()) != null) {
LOG.error(s);
}
try {
runningStatus = p.waitFor();
} catch (InterruptedException e) {
}
记得在start()之后, waitFor()之前把缓冲区读出来打log, 就可以看到你的shell为什么会没有按照预期运行。 这个还有一个好处是,可以读shell里面输出的结果, 方便java代码进一步操作。
也许你还会遇到这个问题,明明手工可以运行的命令,java调用的shell中某一些命令居然不能执行,报错:命令不存在!
比如我在使用casperjs的时候,手工去执行shell明明是可以执行的,但是java调用的时候,发现总是出错。
通过读取缓冲区就能发现错误日志了。 我发现即便自己把安装的casperjs的bin已经加入了path中(/etc/profile,
各种bashrc中)还不够。 比如:
exportNODE_HOME="/home/admin/node"
exportCASPERJS_HOME="/home/admin/casperjs"
exportPHANTOMJS_HOME="/home/admin/phantomjs"
exportPATH=$PATH:$JAVA_HOME/bin:/root/bin:$NODE_HOME/bin:$CASPERJS_HOME/bin:$PHANTOMJS_HOME/bin
原来是因为java在调用shell的时候,默认用的是系统的/bin/下的指令。特别是你用root权限运行的时候。 这时候,你要在/bin下加软链了。针对我上面的例子,就要在/bin下加软链:
ln -s /home/admin/casperjs/bin/casperjscasperjs;
ln -s /home/admin/node/bin/nodenode;
ln -s /home/admin/phantomjs/bin/phantomjsphantomjs;
这样,问题就可以解决了。
如果是通过java调用shell进行打包,那么要注意路径的问题了
因为shell里面tar的压缩和解压可不能直接写:
tar -zcf /home/admin/data/result.tar.gz /home/admin/data/result
直接给你报错,因为tar的压缩源必须到路径下面, 因此可以写成
tar -zcf /home/admin/data/result.tar.gz -C /home/admin/data/ result
如果我的shell是在jar包中怎么办?
答案是:解压出来。再按照上面指示进行操作。(1)找到路径
String jarPath = findClassJarPath(ClassLoaderUtil.class);
JarFiletopLevelJarFile = null;
try {
topLevelJarFile = new JarFile(jarPath);
Enumeration<JarEntry> entries = topLevelJarFile.entries();
while (entries.hasMoreElements()) {
JarEntryentry = entries.nextElement();
if (!entry.isDirectory() entry.getName().endsWith(".sh")) {
对你的shell文件进行处理
}
}
对文件处理的方法就简单了,直接touch一个临时文件,然后把数据流写入,代码:
FileUtils.touch(tempjline);
tempjline.deleteOnExit();
FileOutputStreamfos = new FileOutputStream(tempjline);
IOUtils.(ClassLoaderUtil.class.getResourceAsStream(r), fos);
fos.close();
④ 怎么通过java去调用并执行shell脚本以及问题总结
packageark;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.util.ArrayList;
importjava.util.List;
publicclassReadCmdLine{
publicstaticvoidmain(Stringargs[]){
Processprocess=null;
List<String>processList=newArrayList<String>();
try{
process=Runtime.getRuntime().exec("ps-aux");//运行shell命令,结果返回给process
//运行成功后将结果保存至文件
BufferedReaderinput=newBufferedReader(newInputStreamReader(process.getInputStream()));
Stringline="";
while((line=input.readLine())!=null){
processList.add(line);
}
input.close();
}catch(IOExceptione){
e.printStackTrace();
}
for(Stringline:processList){
System.out.println(line);
}
}
}
⑤ 脚本错误怎么办 解决步骤总结如下
1、在一些软件的日常使用中,我们会遇到各种各样的脚本错误,如下图我遇到的这个,每次都的你去点点鼠标,虽不影响软件的正常运行但是非常烦人,该怎么处理呢
2、首先我们考虑设置的问题。我们打开浏览器,找到Internet选项,然后打开Internet选项
3、在这里我们要区分一下,这个脚本错误是Inter上的还是本地的,注意区分。区分以后我们选择自定义级别
4、然后我们再来到另一个选项卡“程序”里,在中间位置我们可以看到“管理加载项”这一选项
5、点击开以后,我们可以看到所有的加载项,在这里我建议禁用掉一些看起来莫名其妙的(说白了就是八成是流氓强制安装的)加载项
6、做完这一切之后,我们再删除一下浏览器的Cookie和历史记录文件
7、最后我再建议杀一下毒,扫描系统关键区域就行。这样处理了以后基本就OK了。
⑥ 怎么通过java去调用并执行shell脚本以及问题总结
以下是我在公司项目中实际应用到的:
/**
*执行系统命令
*@time2016/10/17$17:05$
*/
{
protectedstaticLoggerlogger=LoggerFactory.getLogger(ShareDiskFileUtils.class);
;
;
static{
Stringosname=System.getProperty("os.name").toLowerCase();
isWindow=osname.contains("win");
islinux=osname.contains("linux");
logger.info("系统环境:"+(isLinux?"Linux":"Window"));
}
/**
*执行命令
*/
(Stringcommand)throwsIOException,InterruptedException{
logger.info("执行系统命令:"+command);
Processprocess=Runtime.getRuntime().exec(getCmdArray(command));
newStreamPrinter(process.getInputStream(),logger).start();
newStreamPrinter(process.getErrorStream(),logger).start();
process.waitFor();
returnprocess;
}
/**
*这个非常重要,如果你直接执行command,会出现一些问题,如果参数中包含一些空格,",'之类的特殊字符,将会执行失败,
*/
privatestaticString[]getCmdArray(Stringcommand){
if(isWindow){
returnnewString[]{"cmd","/c",command};
}
if(isLinux){
returnnewString[]{"/bin/sh","-c",command};
}
returnnewString[]{"cmd","/c",command};
}
}
⑦ 怎么通过java去调用并执行shell脚本以及问题总结
以下是我在公司项目中实际应用到的:
/** * 执行系统命令 * @time 2016/10/17$ 17:05$ */public final class SystemCommandExecutor { protected static Logger logger = LoggerFactory.getLogger(ShareDiskFileUtils.class); public static final boolean isWindow; public static final boolean isLinux; static { String osname = System.getProperty("os.name").toLowerCase(); isWindow = osname.contains("win"); isLinux = osname.contains("linux"); logger.info("系统环境: " + (isLinux ? "Linux" : "Window")); } /** * 执行命令 */ public static Process executeCommand(String command) throws IOException, InterruptedException { logger.info("执行系统命令: " + command); Process process = Runtime.getRuntime().exec(getCmdArray(command)); new StreamPrinter(process.getInputStream(), logger).start(); new StreamPrinter(process.getErrorStream(), logger).start(); process.waitFor(); return process; } /** * 这个非常重要, 如果你直接执行command,会出现一些问题,如果参数中包含一些空格,", ' 之类的特殊字符,将会执行失败, */ private static String[] getCmdArray(String command) { if (isWindow) { return new String[]{"cmd", "/c", command}; } if (isLinux) { return new String[]{"/bin/sh", "-c", command}; } return new String[]{"cmd", "/c", command}; }}
⑧ 常见浏览器多长时间会提示“脚本运行时间过长”总结
这个不同的浏览器规则是不一样的,而且即使同一款浏览器,对于不同脚本,设置的执行时间阈
值也不太一样。如果脚本运行时,内存消耗增长缓慢,一般允许等待时间长一点
⑨ 怎么通过java去调用并执行shell脚本以及问题总结
// 用法:Runtime.getRuntime().exec("命令");
String shpath="/test/test.sh"; //程序路径
Process process =null;
String command1 = “chmod 777 ” + shpath;
try {
Runtime.getRuntime().exec(command1 ).waitFor();
} catch (IOException e1) {
e1.printStackTrace();
}catch (InterruptedException e) {
e.printStackTrace();
}
String var="201102"; /参数
String command2 = “/bin/sh ” + shpath + ” ” + var;
Runtime.getRuntime().exec(command2).waitFor();