- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从下面给定的类调用groovy方法
package infa9
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import com.ABC.csm.context.AppCtxProperties;
import com.ABC.csm.context.AppContext;
public class LicenseInfo
{
private StringBuffer licenseInformation;
public LicenseInfo() {
licenseInformation = new StringBuffer();
}
public StringBuffer getLicenseInformation(){
return licenseInformation;
}
public void fetchLicenseInformation(HashMap<String,String> params,Map env)
{
ArrayList<String> licenseList = fetchLicenses(params);
.
.
.
}
private ArrayList<String> fetchLicenses(HashMap<String,String> params,Map env)
{
ArrayList<String>licenseList = new ArrayList<String>();
.
.
.
return licenseList;
}
}
这就是我想做的
//getting user parameters
HashMap<String,String> params = IntermediateResults.get("userparams")
//getting environment variables
Map env=AppContext.get(AppCtxProperties.environmentVariables)
Object[] arguments=new Object[2]
arguments.putAt("userparams", params)
arguments.putAt("env", env)
GroovyShell shell = new GroovyShell()
Script infa9LicenseScript = shell.parse("plugins.infa9.LicenseInfo")
infa9LicenseScript.invokeMethod(fetchLicenseInformation, arguments)
String lic=(String)infa9LicenseScript.invokeMethod(getLicenseInformation,null)
我是否将参数传递给 fetchLicenseInformation
正确吗??我需要通过HashMap<String,String> ,Map
请帮我调用带有参数的常规方法
错误:Exception in thread "main" groovy.lang.MissingPropertyException: No such property: userparams for class: [Ljava.lang.Object;
更新
public List<String> fetchLicenses( Map<String,String> params, Map env ) {
//[ 'a', 'b', 'c' ]
ArrayList<String>licenseList = new ArrayList<String>();
String infacmdListLicensesCommand = null;
if (System.getProperty("os.name").contains("Win"))
{ infacmdListLicensesCommand = env.get("INFA_HOME")
+ "/isp/bin/infacmd.bat ListLicenses -dn "
+ params.get("dn") + " -un " + params.get("un") + " -pd "
+ params.get("pd") + " -sdn " + params.get("sdn") + " -hp "
+ params.get("dh") + ":" + params.get("dp");}
else
{ infacmdListLicensesCommand = env.get("INFA_HOME")
+ "/isp/bin/infacmd.sh ListLicenses -dn " //this is line no 71, where exception is thrown
+ params.get("dn") + " -un " + params.get("un") + " -pd "
+ params.get("pd") + " -sdn " + params.get("sdn") + " -hp "
+ params.get("dh") + ":" + params.get("dp");}
try {
Process proc = Runtime.getRuntime().exec(infacmdListLicensesCommand);
InputStream stdin = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
licenseList.add(line);
}
int exitVal = proc.waitFor();
System.out.println("Process exit value is: " + exitVal);
}catch (IOException io) {
io.printStackTrace();
}catch (InterruptedException ie) {
ie.printStackTrace();
} /* end catch */
return licenseList;
}
异常 Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: java.lang.String.positive() is applicable for argument types: () values: []
Possible solutions: notify(), tokenize(), size()
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unaryPlus(ScriptBytecodeAdapter.java:764)
at infa9.LicenseInfo.fetchLicenses(Infa9LicensesUtil.groovy:71)
最佳答案
对...我在文件夹 ./test/
中创建了这个 groovy 脚本 LicenseInfo.groovy
:
package test
public class LicenseInfo {
StringBuffer licenseInformation
public LicenseInfo() {
licenseInformation = new StringBuffer()
}
public void fetchLicenseInformation( Map<String,String> params, Map env ) {
List<String> licenseList = fetchLicenses( params, env )
println "List is $licenseList"
}
public List<String> fetchLicenses( Map<String,String> params, Map env ) {
[ 'a', 'b', 'c' ]
}
}
在当前文件夹./
内,我创建了这个groovy脚本Test.groovy
:
// Make some params...
def params = [ name:'tim', value:'text' ]
// Fake an env Map
def env = [ something:'whatever' ]
// Load the class from the script
def liClass = new GroovyClassLoader().parseClass( new File( 'test/LicenseInfo.groovy' ) )
// Run the method
liClass.newInstance().fetchLicenseInformation( params, env )
当我执行命令时
groovy Test.groovy
打印出来:
List is [a, b, c]
您收到的正
错误是由于 Groovy 解析器的工作方式造成的...在连接字符串时,您不能将 +
放在下一行的开头, +
必须在上一行后面(因为分号对于 groovy 中的行结尾是可选的,解析器无法知道您要添加到上一行) )
这会起作用:
if (System.getProperty("os.name").contains("Win")) {
infacmdListLicensesCommand = env.get("INFA_HOME") + "/isp/bin/infacmd.bat ListLicenses -dn " +
params.get("dn") + " -un " + params.get("un") + " -pd " +
params.get("pd") + " -sdn " + params.get("sdn") + " -hp " +
params.get("dh") + ":" + params.get("dp")
}
else {
infacmdListLicensesCommand = env.get("INFA_HOME") + "/isp/bin/infacmd.sh ListLicenses -dn " +
params.get("dn") + " -un " + params.get("un") + " -pd " +
params.get("pd") + " -sdn " + params.get("sdn") + " -hp " +
params.get("dh") + ":" + params.get("dp")
}
这将是做同样事情的更Groovy方式:
boolean isWindows = System.getProperty("os.name").contains("Win")
// Do it as a list of 3 items for formatting purposes
infacmdListLicensesCommand = [
"$env.INFA_HOME/isp/bin/infacmd.${isWindows?'bat':'sh'} ListLicenses"
"-dn $params.dn -un $params.un -pd $params.pd -sdn $params.sdn"
"-hp $params.dh:$params.dp" ].join( ' ' ) // then join them back together
println infacmdListLicensesCommand // print it out to see it's the same as before
关于java - 来自 Groovy 的带有参数的 invokeMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7568120/
我有一个 java 对象的实例,假设有一个名为 myList 的 ArrayList 实例。 对于此特定实例,我想覆盖 invokeMethod 方法以(例如)记录调用该方法。 我可以做这样的事情:
我在项目中有基类A A继承了很多子类 public class A { public void Process(string myString1, int myInt1 )
我注意到 Groovy MetaClass 的一些奇怪行为,我想知道是否有人可以给我一些关于这里发生的事情的线索。 这工作正常: @Override Object invokeMethod(Strin
我想使用QMetaObject::invokeMethod来调用一个对象的方法(稍后它会在另一个线程中运行,然后invokeMethod就派上用场了)。我在 Python 3.3 上使用 PySide
我使用以下代码来避免使用 switch 语句来决定调用哪个方法,它只与我设置的 BindingFlags 标志一起工作,没有 InvokeMethod。 InvokeMethod 的实际含义是什么,为
我的类中有一个方法调用QMetaObject::invokeMethod。来自documentation我读到使用 Qt::DirectConnection 应该立即调用插槽。在我的代码中,我似乎体验
是否可以调用静态方法? 我正在使用: QMetaObject::invokeMethod(this ,strThread.toLatin1()
这是我要调用的方法的原型(prototype): const QString& FieldForm::getTitle(void) const; 我必须通过 Qt 函数调用此方法:invokeMeth
我正在尝试调试一段代码,该代码更新用于 Windows 服务的凭据,该服务未运行。它不会抛出异常,它只是没有通过检查以表明它已被应用。 MSDN对构造函数的描述如下: public Object In
我目前正在移植 FitNesse 的 Slim 服务器,但我现在有点卡住了。我得到的是像这样的字符串: ("id_4", "call", "id", "setNumerator", "20") ("i
我正在用 Qt 做一个项目,其中 invoke 方法在单独的线程上运行并从主线程调用。如果我将 QByteArray 作为 const 传递,它会构建并运行。但是,如果我删除它构建的 const 但在
这是 QMetaObject::invokeMethod doesn't find the method 的跟进.调用没有参数的方法是有效的。但是将前面的问题扩展到带参数的方法让我再次失败。 请参阅以
我正在开发一个小型 Flutter 应用程序,我在其中使用 native 库进行一些计算。 dart 和 java(在 android 上)之间的通信是双向的,为此使用 methodChannels。
我有一个父类(super class)Common,它继承自QObject。然后我得到了一个类Item,它继承自Common。 Common.h class Common : public QObje
我有以下代码: class A : public QObject { Q_OBJECT public: A() : QObject() { moveToThr
...从静态类和非主线程调用。 简而言之,我有一个类“sapp”,它有另一个静态类“tobj”作为静态成员。为了避免静态订单初始化失败,tobj 在 sapp 的方法中声明,该方法又返回 tobj 实
在 Groovy 中,invokeMethod 和 methodMissing 方法之间的主要区别是什么?是否有明确的指导原则,何时应该优先使用其中一个? 最佳答案 何时使用什么:始终使用 metho
除了QMetaObject::invokeMethod是否有任何类型安全的方式来异步调用方法/插槽(也就是在 GUI 线程中排队执行)? QMetaObject::invokeMethod没有对函数名
我想从下面给定的类调用groovy方法 package infa9 import java.io.BufferedReader; import java.io.IOException; import
我正在尝试找出 QMetaObject::invokeMethod 的用法。我有一个函数,它有一个参数(非 const QString),我希望它是输出,该函数没有返回值,对其调用 invokeMet
我是一名优秀的程序员,十分优秀!