• jbase代码生成器(成型篇)


    上一篇说到通用码表可以解决百分之八十的基础维护功能,剩下的百分二十的需要级联维护的界面可以用代码生成器生成代码,基于生成的代码拷贝再组装界面,来解决这百分之二十的工作量里的百分之八十工作量。

    首先实现代码生成器

    Class Jbase.MakeWebCode Extends %RegisteredObject
    {
    
    /// 编码格式改WriteLineWithCode
    /// 生成所有表实体代码
    /// w ##class(Jbase.MakeWebCode).MakeAllJavaModelCode()
    ClassMethod MakeAllJavaModelCode()
    {
    	s rset1 = ##class(%ResultSet).%New()
    	d rset1.Prepare("select TABLE_NAME FROM information_schema.Tables where TABLE_SCHEMA='dbo'")
    	s exeret1=rset1.Execute()
    	s colCount1=rset1.GetColumnCount()
    	s dealNum1=0
        While(rset1.Next())
        {
            s colField=rset1.GetColumnName(1)
            s ColValue=rset1.GetDataByName(colField)
            i $e(ColValue,1,2)="V_" continue
            s makeRet= ..MakeModelCodeJava(ColValue,"LIS.ModelJava\")
            zw ColValue
            zw makeRet
        }
        q "完成"
    }
    
    /// 生成操作表相关的代码,包括java代码、界面增删改查代码、实体代码
    /// 编码格式改WriteLineWithCode
    /// TableName:表名
    /// PathAdd:生成路径,默认D
    /// AshxDir:ashx文件要放的路径,默认lis
    /// w ##class(Jbase.MakeWebCode).MakeOneTableCode("SYS_Form")
    /// w ##class(Jbase.MakeWebCode).MakeOneTableCode("BT_Bed")
    /// w ##class(Jbase.MakeWebCode).MakeOneTableCode("BT_TestCode")
    /// w ##class(Jbase.MakeWebCode).MakeOneTableCode("BT_Bottle")
    /// w ##class(Jbase.MakeWebCode).MakeOneTableCode("BT_Ward")
    ClassMethod MakeOneTableCode(TableName, PathAdd, AshxDir)
    {
    	s TableName=$g(TableName)
    	s PathAdd=$g(PathAdd)
    	s MPath=$g(MPath)
    	s AshxDir=$g(AshxDir)
    	//构造java业务代码
    	w ..MakeJavaBllCode(TableName, PathAdd, AshxDir),!
    	//构造aspx页面代码
    	w ..MakeAspxCode(TableName, PathAdd, AshxDir),!
    	//构造实体代码
    	w ..MakeModelCodeJava(TableName, PathAdd),!
    	q "完成"
    }
    
    /// 构造表的增删改查的界面代码,以简化常规表界面代码工作量
    /// 编码格式改WriteLineWithCode
    /// w ##class(Jbase.MakeWebCode).MakeAspxCode("BT_Container")
    ClassMethod MakeJavaBllCode(TableName, PathAdd, AshxDir)
    {
    	s TableName=$g(TableName)
    	s PathAdd=$g(PathAdd)
    	s AshxDir=$g(AshxDir)
    	i '$l(AshxDir) s AshxDir="lis"
    	s rset = ##class(%ResultSet).%New()
    	d rset.Prepare("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,DESCRIPTION,IS_NULLABLE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='dbo'  and TABLE_NAME='"_TableName_"'")
    	s exeret=rset.Execute()
    	s colCount=rset.GetColumnCount()
    	Set repid=$I(^CacheTemp)
    	k ^TMP($zn,repid,$j)
    	s IsLinux=1
    	s logpath=""
    	i ##class(%SYSTEM.Version).GetOS()="Windows" s IsLinux=0
    	//默认路径
    	i '$l(logpath) d
    	.i IsLinux=0 d
    	..s logpath="D:\"
    	.e  d
    	..s logpath="/"
    	
    	s logName=logpath_PathAdd_"ash"_$tr(TableName,"_")_".java"
    	//方法名,查询名
    	s TableInnerName=$tr(TableName,"_")
    	//不存在目录就创建
    	i '##class(%File).DirectoryExists(logpath_PathAdd) d
    	.d ##class(%File).CreateNewDir(logpath_PathAdd,"")
    	
    	s file=##class(%File).%New(logName)
    	//存在就追加
    	i ##class(%File).Exists(logName) d
    	.d ##class(%File).Delete(logName)
    	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
    	//不存在就新建
    	e  d
    	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
    	
    	//写类头部
    	d ..WriteLineWithCode(file,"import appcode.BaseHttpHandlerNoSession;")
    	d ..WriteLineWithCode(file,"import appcode.Helper;")
    	d ..WriteLineWithCode(file,"import LIS.Core.Dto.HashParam;")
        d ..WriteLineWithCode(file,"import LIS.Core.Dto.ParamDto;")
        d ..WriteLineWithCode(file,"import LIS.Core.Dto.OutParam;")
        d ..WriteLineWithCode(file,"import LIS.Model.Entity.*;")
        d ..WriteLineWithCode(file,"import LIS.Core.Util.Convert;")
        d ..WriteLineWithCode(file,"")
        
        d ..WriteLineWithCode(file,"import java.util.ArrayList;")
        d ..WriteLineWithCode(file,"import java.util.List;")
        d ..WriteLineWithCode(file,"")
        
        d ..WriteLineWithCode(file,"/**")
        d ..WriteLineWithCode(file,"*由代码生成器生成的后台代码")
        d ..WriteLineWithCode(file,"*/")
        d ..WriteLineWithCode(file,"public class ash"_TableInnerName_" extends BaseHttpHandlerNoSession {")
     
        //构造增加方法的代码
        d ..WriteLineWithCode(file,"")
        d ..WriteLineWithCode(file,"	/**")
        d ..WriteLineWithCode(file,"	 * 保存数据,前台按表的属性名提交")
        d ..WriteLineWithCode(file,"	 * @return 字符串")
        d ..WriteLineWithCode(file,"	 */")
        d ..WriteLineWithCode(file,"	public String Save"_TableInnerName_"()")
        d ..WriteLineWithCode(file,"    {")
        d ..WriteLineWithCode(file,"		"_TableInnerName_" dto=new "_TableInnerName_"();")
        
        While(rset.Next())
        {
    	    s outStr=""
            s colField=rset.GetColumnName(1)
            s colName=rset.GetDataByName(colField)
            s colField1=rset.GetColumnName(2)
            s colType=rset.GetDataByName(colField1)
            s colField2=rset.GetColumnName(3)
            s colLen=rset.GetDataByName(colField2)
            s colField3=rset.GetColumnName(4)
            s colDesc=rset.GetDataByName(colField3)
      		d ..WriteLineWithCode(file,"		//"_colDesc)
            d ..WriteLineWithCode(file,"		dto."_colName_"=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, """_colName_"""), dto."_colName_");")
        }
        
        d ..WriteLineWithCode(file,"		OutParam out=new OutParam();")
        d ..WriteLineWithCode(file,"		int ret=0;")
        d ..WriteLineWithCode(file,"		//更新")
        d ..WriteLineWithCode(file,"		if(dto.RowID>0)")
        d ..WriteLineWithCode(file,"		{")
        d ..WriteLineWithCode(file,"			ret=EntityManager().Update(dto,null, out, null, null, null);")
        d ..WriteLineWithCode(file,"		}")
        d ..WriteLineWithCode(file,"		//插入数据")
        d ..WriteLineWithCode(file,"		else")
        d ..WriteLineWithCode(file,"		{")
        d ..WriteLineWithCode(file,"			ret=EntityManager().Save(dto,out);")
        d ..WriteLineWithCode(file,"		}")
    	d ..WriteLineWithCode(file,"		if(ret==1)")
    	d ..WriteLineWithCode(file,"		{")
    	d ..WriteLineWithCode(file,"			return Helper.Success();")
    	d ..WriteLineWithCode(file,"		}")
    	d ..WriteLineWithCode(file,"		else")
        d ..WriteLineWithCode(file,"		{")
        d ..WriteLineWithCode(file,"			return Helper.Error(out);")
        d ..WriteLineWithCode(file,"		}")
        d ..WriteLineWithCode(file,"    }")
        d ..WriteLineWithCode(file,"")
        d ..WriteLineWithCode(file,"")
        d ..WriteLineWithCode(file,"")    
    	
    	
    	//构造删除方法
    	d ..WriteLineWithCode(file,"	/**")
        d ..WriteLineWithCode(file,"	 * 删除数据,多个RowID以上尖号分割")
        d ..WriteLineWithCode(file,"	 * @return 字符串")
        d ..WriteLineWithCode(file,"	 */")
        d ..WriteLineWithCode(file,"	public String Delete"_TableInnerName_"()")
        d ..WriteLineWithCode(file,"    {")
        d ..WriteLineWithCode(file,"		String RowIDS=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, ""RowIDS""), """");")
        
        d ..WriteLineWithCode(file,"		if(RowIDS.isEmpty())")
        d ..WriteLineWithCode(file,"		{")
        d ..WriteLineWithCode(file,"			return Helper.Error(""请传入要删除数据的RowID,多个以^分割!"");")
        d ..WriteLineWithCode(file,"		}")
        d ..WriteLineWithCode(file,"		//分割主键")
        d ..WriteLineWithCode(file,"		String [] arr=RowIDS.split(""^"");")
        d ..WriteLineWithCode(file,"		//创建一个空对象")
        d ..WriteLineWithCode(file,"		"_TableInnerName_" dto=new "_TableInnerName_"();")
        d ..WriteLineWithCode(file,"		//out参数")
        d ..WriteLineWithCode(file,"		OutParam out=new OutParam();")
        d ..WriteLineWithCode(file,"		//循环删除数据")
        d ..WriteLineWithCode(file,"		for(int i=0;i)
    	d ..WriteLineWithCode(file,"		{")
    	d ..WriteLineWithCode(file,"			HashParam hs=new HashParam();")
    	d ..WriteLineWithCode(file,"			hs.Add(""RowID"",Convert.ToInt32(arr[i]));")
    	d ..WriteLineWithCode(file,"			int ret=EntityManager().Remove(dto,hs,out,null,null);")
    	d ..WriteLineWithCode(file,"			if(ret!=1)")
    	d ..WriteLineWithCode(file,"			{")
    	d ..WriteLineWithCode(file,"				return Helper.Error(out);")
        d ..WriteLineWithCode(file,"			}")
        d ..WriteLineWithCode(file,"		}")
        d ..WriteLineWithCode(file,"		return Helper.Success();")
        d ..WriteLineWithCode(file,"	}")
        d ..WriteLineWithCode(file,"")
        d ..WriteLineWithCode(file,"")
        
        //构造查询方法的代码
        d ..WriteLineWithCode(file,"")
        d ..WriteLineWithCode(file,"	/**")
        d ..WriteLineWithCode(file,"	 * 查询数据,前台按表的属性名提交")
        d ..WriteLineWithCode(file,"	 * @return 字符串")
        d ..WriteLineWithCode(file,"	 */")
        d ..WriteLineWithCode(file,"	public String Qry"_TableInnerName_"()")
        d ..WriteLineWithCode(file,"    {")
        d ..WriteLineWithCode(file,"		//预留的取前台参数代码")
        
        d ..WriteLineWithCode(file,"		//创建一个空对象")
        d ..WriteLineWithCode(file,"		"_TableInnerName_" dto=new "_TableInnerName_"();")
        d ..WriteLineWithCode(file,"		//参数")
        d ..WriteLineWithCode(file,"		List para=new ArrayList<>();")
        d ..WriteLineWithCode(file,"		//sql连接符号")
        d ..WriteLineWithCode(file,"		List joiner=new ArrayList<>();")
        d ..WriteLineWithCode(file,"		//sql比较符号")
        d ..WriteLineWithCode(file,"		List operators=new ArrayList<>();")
        d ..WriteLineWithCode(file,"		//模糊查询")
        d ..WriteLineWithCode(file,"		String Filter=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, ""Filter""), """");")
        s exeret=rset.Execute()
        d ..WriteLineWithCode(file,"		//预留参数")
        While(rset.Next())
        {
    	    s outStr=""
            s colField=rset.GetColumnName(1)
            s colName=rset.GetDataByName(colField)
            s colField1=rset.GetColumnName(2)
            s colType=rset.GetDataByName(colField1)
            s colField2=rset.GetColumnName(3)
            s colLen=rset.GetDataByName(colField2)
            s colField3=rset.GetColumnName(4)
            s colDesc=rset.GetDataByName(colField3)
            d ..WriteLineWithCode(file,"		//"_colDesc)
            d ..WriteLineWithCode(file,"		String "_colName_"=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, """_colName_"""), """");")
    
        }
        s exeret=rset.Execute()
        d ..WriteLineWithCode(file,"		//模糊查询")
        d ..WriteLineWithCode(file,"		if(!Filter.isEmpty())")
        d ..WriteLineWithCode(file,"		{")
        d ..WriteLineWithCode(file,"			ParamDto p=null;")
        While(rset.Next())
        {
    	    s outStr=""
            s colField=rset.GetColumnName(1)
            s colName=rset.GetDataByName(colField)
            s colField1=rset.GetColumnName(2)
            s colType=rset.GetDataByName(colField1)
            s colField2=rset.GetColumnName(3)
            s colLen=rset.GetDataByName(colField2)
            s colField3=rset.GetColumnName(4)
            s colDesc=rset.GetDataByName(colField3)
            i colType'="varchar" continue
    		d ..WriteLineWithCode(file,"			//"_colDesc)
            d ..WriteLineWithCode(file,"			p=new ParamDto();")
            d ..WriteLineWithCode(file,"			p.Key="""_colName_""";")
            d ..WriteLineWithCode(file,"			p.Value=""%""+Filter+""%"";")
            d ..WriteLineWithCode(file,"			para.add(p);")
            d ..WriteLineWithCode(file,"			joiner.add(""or"");")
            d ..WriteLineWithCode(file,"			operators.add(""like"");")
        }
        d ..WriteLineWithCode(file,"		}")
        
        d ..WriteLineWithCode(file,"		//调用查询")
        d ..WriteLineWithCode(file,"		String json=EntityManager().QueryAllWithFK(dto,para,"""",true,-1,-1,"""",joiner,operators);")
        d ..WriteLineWithCode(file,"		return json;")
        d ..WriteLineWithCode(file,"	}")
        d ..WriteLineWithCode(file,"")
        d ..WriteLineWithCode(file,"")
        
        
        
        //收尾
        d ..WriteLineWithCode(file,"}")
        d file.Close()
        q "代码生成在:"_logName
    	q "完成"
    }
    
    /// 构造表的增删改查的界面代码,以简化常规表界面代码工作量
    /// 编码格式改WriteLineWithCode
    /// w ##class(Jbase.MakeWebCode).MakeAspxCode("SYS_TableEnum")
    /// w ##class(Jbase.MakeWebCode).MakeAspxCode("RP_VisitNumber")
    ClassMethod MakeAspxCode(TableName, PathAdd, AshxDir)
    {
    	s TableName=$g(TableName)
    	s PathAdd=$g(PathAdd)
    	s AshxDir=$g(AshxDir)
    	i '$l(AshxDir) s AshxDir="lis"
    	s ClassName=$tr(TableName,"_")
    	s ClassName=$tr(TableName,"_")
    	s rset = ##class(%ResultSet).%New()
    	d rset.Prepare("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,DESCRIPTION,IS_NULLABLE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='dbo'  and TABLE_NAME='"_TableName_"'")
    	s exeret=rset.Execute()
    	s colCount=rset.GetColumnCount()
    	Set repid=$I(^CacheTemp)
    	k ^TMP($zn,repid,$j)
    	s IsLinux=1
    	s logpath=""
    	i ##class(%SYSTEM.Version).GetOS()="Windows" s IsLinux=0
    	//默认路径
    	i '$l(logpath) d
    	.i IsLinux=0 d
    	..s logpath="D:\"
    	.e  d
    	..s logpath="/"
    	
    	s logName=logpath_PathAdd_"frm"_$tr(TableName,"_")_".aspx"
    	//方法名,查询名
    	s TableInnerName=$tr(TableName,"_")
    	//不存在目录就创建
    	i '##class(%File).DirectoryExists(logpath_PathAdd) d
    	.d ##class(%File).CreateNewDir(logpath_PathAdd,"")
    	
    	s file=##class(%File).%New(logName)
    	//存在就追加
    	i ##class(%File).Exists(logName) d
    	.d ##class(%File).Delete(logName)
    	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
    	//不存在就新建
    	e  d
    	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
    	
    	
    	s RowSpec="RowID"
    	s RowLen="10"
    	s RowRemark="主键"
    	s types="int"
        While(rset.Next())
        {
    	    s outStr=""
            s colField=rset.GetColumnName(1)
            s colName=rset.GetDataByName(colField)
            s colField1=rset.GetColumnName(2)
            s colType=rset.GetDataByName(colField1)
            s colField2=rset.GetColumnName(3)
            s colLen=rset.GetDataByName(colField2)
            s colField3=rset.GetColumnName(4)
            s colDesc=rset.GetDataByName(colField3)
            s colField4=rset.GetColumnName(5)
            s NULLABLE=rset.GetDataByName(colField4)
            i colName="RowID" continue
            s RowSpec=RowSpec_","_colName
            s type=colType
            i colType="integer" d
            .s type="int"
            .s colLen=10
            .i NULLABLE="YES" d
            ..s type=type_"?"
            i colType="bigint" d
            .s type="int"
            .s colLen=10
            .i NULLABLE="YES" d
            ..s type=type_"?"
            i colType="smallint" d
            .s type="int"
            .s colLen=10
            .i NULLABLE="YES" d
            ..s type=type_"?"
            i colType="tinyint" d
            .s type="int"
            .s colLen=10
            .i NULLABLE="YES" d
            ..s type=type_"?"
            e  i colType="varchar" d
            .s type="string"
            e  i colType="bit" d
            .s type="bool"
            .s colLen=1
            .i NULLABLE="YES" d
            ..s type=type_"?"
            e  i colType="double" d
            .s type="double"
            .s colLen=10
            .i NULLABLE="YES" d
            ..s type=type_"?"
            e  i colType="numeric" d
            .s type="double"
            .s colLen=10
            .i NULLABLE="YES" d
            ..s type=type_"?"
            s RowLen=RowLen_","_colLen
            s colDesc=$tr(colDesc," ")
            i '$l(colDesc) s colDesc=colName
            s RowRemark=RowRemark_$c(2)_$p($p($p($p($p($p(colDesc," ",1),";",1),"{",1)," ",1),"	",1),"(",1)
            s types=types_","_type
        }
    	
    	//写类头部
    	d ..WriteLineWithCode(file,""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">")
    	d ..WriteLineWithCode(file,""http://www.w3.org/1999/xhtml"">")
    	d ..WriteLineWithCode(file,"")
    	d ..WriteLineWithCode(file,"    "Content-Type"" content=""text/html;charset=utf-8"" />")
    	d ..WriteLineWithCode(file,"    "</span>_TableInnerName_<span class="token string">"供拷贝代码使用")
    	d ..WriteLineWithCode(file,"    "shortcut icon"" href=""../../resource/common/images/favicon.ico"" />")
    	d ..WriteLineWithCode(file,"    ")
    	
    	d ..WriteLineWithCode(file,"    ")
    	d ..WriteLineWithCode(file,"    ")
    	d ..WriteLineWithCode(file,"")
    	d ..WriteLineWithCode(file,"")
    	d ..WriteLineWithCode(file,"    
    "hisui-layout"" fit=""true"" style=""border: none;"">") d ..WriteLineWithCode(file,"
    "region:'center',title:''"" style=""border: none;"">") d ..WriteLineWithCode(file," ") d ..WriteLineWithCode(file," "dg"_TableInnerName_""" title="""" iconcls=""icon-paper"" listranslate=""title~"_TableInnerName_""">
    "
    ) d ..WriteLineWithCode(file,"
    "
    ) s allColNum=$l(RowSpec,",") s ColNum=1 i allColNum>6 s ColNum=2 i allColNum>12 s ColNum=3 s winWidth=370*ColNum+30 s windowHeight=$l(RowSpec,",")*37/ColNum+90 d ..WriteLineWithCode(file,"
    "winEdit"_TableInnerName_""" style=""padding: 10px 0px 0px 10px;width:"_winWidth_"px;height:"_windowHeight_"px;"">") d ..WriteLineWithCode(file,"
    "form"_TableInnerName_""" name=""edit_form"" method=""post"">") d ..WriteLineWithCode(file," "hidden"" id=""txt"_TableInnerName_"RowID"" name=""RowID"" value=""0"" />") d ..WriteLineWithCode(file," ") s outColNum=0 f i=1:1:$l(RowSpec,",") d .s colName=$p(RowSpec,",",i).i colName="RowID" q .s colLen=$p(RowLen,",",i).s remark=$p(RowRemark,$c(2),i).s outColNum=outColNum+1.i(ColNum=1)||(outColNum=1)||((outColNum#ColNum)=1) d ..d ..WriteLineWithCode(file," ").d ..WriteLineWithCode(file," ").//外键参照信息.s refInfo=..GetForeignKeyInfo(colName,TableName).//有外键.i $l(refInfo) d ..d ..WriteLineWithCode(file," ").//没外键.e d ..d ..WriteLineWithCode(file," ").i(ColNum=1)||((outColNum#ColNum)=0)||(outColNum=allColNum) d ..d ..WriteLineWithCode(file," ") d ..WriteLineWithCode(file,"
    "lisar"" listranslate=""html~"_colName_""">"_remark_" "lisal"">"txt"_TableInnerName_colName_""" type=""text"" name="""_colName_""" style=""width:200px;""/> "lisal"">"txt"_TableInnerName_colName_""" type=""text"" name="""_colName_""" style=""width:200px;"" class=""hisui-validatebox"" maxlength="""_colLen_"""/>
    "
    ) d ..WriteLineWithCode(file,"
    "south"" border=""fale"" style=""text-align: center; padding: 5px 0 0;"">") d ..WriteLineWithCode(file," "btnSave"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" plain=""false"" listranslate=""html~Save"">保存") d ..WriteLineWithCode(file," "sp6"">") d ..WriteLineWithCode(file," "btnClose"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" plain=""false"" listranslate=""html~Cancel"">取消") d ..WriteLineWithCode(file,"
    "
    ) d ..WriteLineWithCode(file," "
    ) d ..WriteLineWithCode(file,"
    "
    ) d ..WriteLineWithCode(file,"") d ..WriteLineWithCode(file,"") d ..WriteLineWithCode(file,"") q "代码生成在:"_logName } /// 生成表java实体代码 /// 编码格式改WriteLineWithCode /// w ##class(Jbase.MakeWebCode).MakeModelCodeJava("SYS_Form") ClassMethod MakeModelCodeJava(TableName, PathAdd) { s TableName=$g(TableName) s PathAdd=$g(PathAdd) s ClassName=$tr(TableName,"_") s rset = ##class(%ResultSet).%New() d rset.Prepare("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,DESCRIPTION,IS_NULLABLE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='dbo' and TABLE_NAME='"_TableName_"'") s exeret=rset.Execute() s colCount=rset.GetColumnCount() Set repid=$I(^CacheTemp) k ^TMP($zn,repid,$j) s IsLinux=1 s logpath="" i ##class(%SYSTEM.Version).GetOS()="Windows" s IsLinux=0 //默认路径 i '$l(logpath) d .i IsLinux=0 d ..s logpath="D:\" .e d ..s logpath="/" s logName=logpath_PathAdd_$tr(TableName,"_")_".java" //不存在目录就创建 i '##class(%File).DirectoryExists(logpath_PathAdd) d .d ##class(%File).CreateNewDir(logpath_PathAdd,"") s file=##class(%File).%New(logName) //存在就追加 i ##class(%File).Exists(logName) d .d ##class(%File).Delete(logName) .d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""") //不存在就新建 e d .d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""") //写日志 d ..WriteLineWithCode(file,"package LIS.Model.Entity;") d ..WriteLineWithCode(file,"import LIS.Core.CustomAttributes.*;") d ..WriteLineWithCode(file,"/**") d ..WriteLineWithCode(file,"*[功能描述:本代码由LIS内部代码生成工具生成,请不要手动修改,如要修改,请写修改变更记录]") d ..WriteLineWithCode(file,"*[创建者:LIS.Entity生成器]") d ..WriteLineWithCode(file,"*/") d ..WriteLineWithCode(file,"@UniqueAttribute(ColNames = ""RowID"")") d ..WriteLineWithCode(file,"@TableAttribute(Name=""dbo."_TableName_""")") d ..WriteLineWithCode(file,"public class "_ClassName) d ..WriteLineWithCode(file,"{") While(rset.Next()) { s outStr="" s colField=rset.GetColumnName(1) s colName=rset.GetDataByName(colField) s colField1=rset.GetColumnName(2) s colType=rset.GetDataByName(colField1) s colField2=rset.GetColumnName(3) s colLen=rset.GetDataByName(colField2) s colField3=rset.GetColumnName(4) s colDesc=rset.GetDataByName(colField3) s colField4=rset.GetColumnName(5) s NULLABLE=rset.GetDataByName(colField4) i '$l(colDesc) s colDesc=colName d ..WriteLineWithCode(file," /**") d ..WriteLineWithCode(file," * "_##Class(LIS.Util.Common).DealNotSeeChar(colDesc)) d ..WriteLineWithCode(file," */") i NULLABLE="NO" d .d ..WriteLineWithCode(file," @NotNullAttribute") i colName="RowID" d .d ..WriteLineWithCode(file," @IdAttribute(Name = ""RowID"")") s NULLABLE="No" s type=colType i colType="integer" d .s type="int" .s colLen=10 .i NULLABLE="YES" d ..s type=type_"?" i colType="bigint" d .s type="int" .s colLen=10 .i NULLABLE="YES" d ..s type=type_"?" i colType="smallint" d .s type="int" .s colLen=10 .i NULLABLE="YES" d ..s type=type_"?" i colType="tinyint" d .s type="int" .s colLen=10 .i NULLABLE="YES" d ..s type=type_"?" e i colType="varchar" d .s type="String" e i colType="bit" d .s type="boolean" .s colLen=1 .i NULLABLE="YES" d ..s type=type_"?" e i colType="double" d .s type="double" .s colLen=10 .i NULLABLE="YES" d ..s type=type_"?" e i colType="numeric" d .s type="double" .s colLen=10 .i NULLABLE="YES" d ..s type=type_"?" i type="longvarbinary" s type="String" //外键参照信息 s refInfo=..GetForeignKeyInfo(colName,TableName) s colLen=..DealNotSeeChar(colLen) i $l(refInfo) d .d ..WriteLineWithCode(file," @FrekeyAttribute(Name = """_$tr($p(refInfo,"^",1),"_")_""", RefColumnName = """_$p(refInfo,"^",2)_""", AssociaField = """_$p(refInfo,"^",3)_""")") i $l(colLen) d .d ..WriteLineWithCode(file," @LengthAttribute(MaxLen = "_colLen_")") d ..WriteLineWithCode(file," public "_type_" "_colName_";") d ..WriteLineWithCode(file,"") } d ..WriteLineWithCode(file,"}") d file.Close() q "代码生成在:"_logName } /// 带编码转换写字符 ClassMethod WriteLineWithCode(file, str) { d file.WriteLine(str) //d file.WriteLine($zcvt(str,"O","UTF8")) } /// 得到外键参照关系 ClassMethod GetForeignKeyInfo(ColName, TableName) { s TableName=$g(TableName) s ColName=$g(ColName) s rset = ##class(%ResultSet).%New() d rset.Prepare("select REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME,* FROM information_schema.KEY_COLUMN_USAGE where REFERENCED_TABLE_SCHEMA='dbo' and TABLE_NAME='"_TableName_"' and COLUMN_NAME='"_ColName_"'") s exeret=rset.Execute() s colCount=rset.GetColumnCount() s ret="" While(rset.Next()) { s outStr="" s colField=rset.GetColumnName(1) s refTableName=rset.GetDataByName(colField) s colField1=rset.GetColumnName(2) s refColName=rset.GetDataByName(colField1) s ret=refTableName_"^"_refColName_"^"_..GetForeignKeyAssociaField(refTableName) } q ret } /// 得到外键参照要拉取的字段 ClassMethod GetForeignKeyAssociaField(TableName) { s TableName=$g(TableName) s rset = ##class(%ResultSet).%New() d rset.Prepare("select COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='dbo' and TABLE_NAME='"_TableName_"'") s exeret=rset.Execute() s colCount=rset.GetColumnCount() s ret="RowID^1" s curLev=0 s curIndex=0 s index=0 While(rset.Next()) { s index=index+1 s outStr="" s colField=rset.GetColumnName(1) s colName=rset.GetDataByName(colField) s lev=0 i colName="CName" s lev=999 i colName="IName" s lev=99 i colName="XName" s lev=9 i lev>curLev d .s ret=colName_"^"_index .s curLev=lev .s curIndex=index } q ret } /// 去除不可见字符 ClassMethod DealNotSeeChar(Data As %String) As %String { s Data=$g(Data) i $l(Data) d .f i=0:1:31 d ..s Data=$tr(Data,$c(i)) .s Data=$tr(Data,$c(127)) q Data } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321
    • 322
    • 323
    • 324
    • 325
    • 326
    • 327
    • 328
    • 329
    • 330
    • 331
    • 332
    • 333
    • 334
    • 335
    • 336
    • 337
    • 338
    • 339
    • 340
    • 341
    • 342
    • 343
    • 344
    • 345
    • 346
    • 347
    • 348
    • 349
    • 350
    • 351
    • 352
    • 353
    • 354
    • 355
    • 356
    • 357
    • 358
    • 359
    • 360
    • 361
    • 362
    • 363
    • 364
    • 365
    • 366
    • 367
    • 368
    • 369
    • 370
    • 371
    • 372
    • 373
    • 374
    • 375
    • 376
    • 377
    • 378
    • 379
    • 380
    • 381
    • 382
    • 383
    • 384
    • 385
    • 386
    • 387
    • 388
    • 389
    • 390
    • 391
    • 392
    • 393
    • 394
    • 395
    • 396
    • 397
    • 398
    • 399
    • 400
    • 401
    • 402
    • 403
    • 404
    • 405
    • 406
    • 407
    • 408
    • 409
    • 410
    • 411
    • 412
    • 413
    • 414
    • 415
    • 416
    • 417
    • 418
    • 419
    • 420
    • 421
    • 422
    • 423
    • 424
    • 425
    • 426
    • 427
    • 428
    • 429
    • 430
    • 431
    • 432
    • 433
    • 434
    • 435
    • 436
    • 437
    • 438
    • 439
    • 440
    • 441
    • 442
    • 443
    • 444
    • 445
    • 446
    • 447
    • 448
    • 449
    • 450
    • 451
    • 452
    • 453
    • 454
    • 455
    • 456
    • 457
    • 458
    • 459
    • 460
    • 461
    • 462
    • 463
    • 464
    • 465
    • 466
    • 467
    • 468
    • 469
    • 470
    • 471
    • 472
    • 473
    • 474
    • 475
    • 476
    • 477
    • 478
    • 479
    • 480
    • 481
    • 482
    • 483
    • 484
    • 485
    • 486
    • 487
    • 488
    • 489
    • 490
    • 491
    • 492
    • 493
    • 494
    • 495
    • 496
    • 497
    • 498
    • 499
    • 500
    • 501
    • 502
    • 503
    • 504
    • 505
    • 506
    • 507
    • 508
    • 509
    • 510
    • 511
    • 512
    • 513
    • 514
    • 515
    • 516
    • 517
    • 518
    • 519
    • 520
    • 521
    • 522
    • 523
    • 524
    • 525
    • 526
    • 527
    • 528
    • 529
    • 530
    • 531
    • 532
    • 533
    • 534
    • 535
    • 536
    • 537
    • 538
    • 539
    • 540
    • 541
    • 542
    • 543
    • 544
    • 545
    • 546
    • 547
    • 548
    • 549
    • 550
    • 551
    • 552
    • 553
    • 554
    • 555
    • 556
    • 557
    • 558
    • 559
    • 560
    • 561
    • 562
    • 563
    • 564
    • 565
    • 566
    • 567
    • 568
    • 569
    • 570
    • 571
    • 572
    • 573
    • 574
    • 575
    • 576
    • 577
    • 578
    • 579
    • 580
    • 581
    • 582
    • 583
    • 584
    • 585
    • 586
    • 587
    • 588
    • 589
    • 590
    • 591
    • 592
    • 593
    • 594
    • 595
    • 596
    • 597
    • 598
    • 599
    • 600
    • 601
    • 602
    • 603
    • 604
    • 605
    • 606
    • 607
    • 608
    • 609
    • 610
    • 611
    • 612
    • 613
    • 614
    • 615
    • 616
    • 617
    • 618
    • 619
    • 620
    • 621
    • 622
    • 623
    • 624
    • 625
    • 626
    • 627
    • 628
    • 629
    • 630
    • 631
    • 632
    • 633
    • 634
    • 635
    • 636
    • 637
    • 638
    • 639
    • 640
    • 641
    • 642
    • 643
    • 644
    • 645
    • 646
    • 647
    • 648
    • 649
    • 650
    • 651
    • 652
    • 653
    • 654
    • 655
    • 656
    • 657
    • 658
    • 659
    • 660
    • 661
    • 662
    • 663
    • 664
    • 665
    • 666
    • 667
    • 668
    • 669
    • 670
    • 671
    • 672
    • 673
    • 674
    • 675
    • 676
    • 677
    • 678
    • 679
    • 680
    • 681
    • 682
    • 683
    • 684
    • 685
    • 686
    • 687
    • 688
    • 689
    • 690
    • 691
    • 692
    • 693
    • 694
    • 695
    • 696
    • 697
    • 698
    • 699
    • 700
    • 701
    • 702
    • 703
    • 704
    • 705
    • 706
    • 707
    • 708
    • 709
    • 710
    • 711
    • 712
    • 713
    • 714
    • 715
    • 716
    • 717
    • 718
    • 719
    • 720
    • 721
    • 722
    • 723
    • 724
    • 725
    • 726
    • 727
    • 728
    • 729
    • 730
    • 731
    • 732
    • 733
    • 734
    • 735
    • 736
    • 737
    • 738
    • 739
    • 740
    • 741
    • 742
    • 743
    • 744
    • 745
    • 746
    • 747
    • 748
    • 749
    • 750
    • 751
    • 752
    • 753
    • 754
    • 755
    • 756
    • 757
    • 758
    • 759
    • 760
    • 761
    • 762
    • 763
    • 764
    • 765
    • 766
    • 767
    • 768
    • 769
    • 770
    • 771
    • 772
    • 773
    • 774
    • 775
    • 776
    • 777
    • 778
    • 779
    • 780
    • 781
    • 782
    • 783
    • 784
    • 785
    • 786
    • 787
    • 788
    • 789
    • 790
    • 791
    • 792
    • 793
    • 794
    • 795
    • 796
    • 797
    • 798
    • 799
    • 800
    • 801
    • 802
    • 803
    • 804
    • 805
    • 806
    • 807
    • 808
    • 809
    • 810
    • 811
    • 812
    • 813
    • 814
    • 815
    • 816
    • 817
    • 818
    • 819
    • 820
    • 821
    • 822
    • 823
    • 824
    • 825
    • 826
    • 827
    • 828
    • 829
    • 830
    • 831
    • 832
    • 833
    • 834
    • 835
    • 836
    • 837
    • 838
    • 839
    • 840
    • 841
    • 842
    • 843
    • 844
    • 845
    • 846
    • 847
    • 848
    • 849
    • 850
    • 851
    • 852
    • 853
    • 854
    • 855
    • 856
    • 857
    • 858
    • 859
    • 860
    • 861
    • 862
    • 863
    • 864
    • 865
    • 866
    • 867
    • 868
    • 869
    • 870
    • 871
    • 872
    • 873
    • 874
    • 875
    • 876
    • 877
    • 878
    • 879
    • 880
    • 881
    • 882
    • 883
    • 884
    • 885
    • 886
    • 887
    • 888
    • 889
    • 890
    • 891
    • 892
    • 893
    • 894
    • 895
    • 896
    • 897
    • 898
    • 899
    • 900
    • 901
    • 902
    • 903
    • 904
    • 905
    • 906
    • 907
    • 908
    • 909
    • 910
    • 911
    • 912
    • 913
    • 914
    • 915
    • 916
    • 917
    • 918
    • 919
    • 920
    • 921
    • 922
    • 923
    • 924
    • 925
    • 926
    • 927
    • 928
    • 929
    • 930
    • 931
    • 932
    • 933
    • 934
    • 935
    • 936
    • 937
    • 938
    • 939
    • 940
    • 941
    • 942
    • 943
    • 944
    • 945
    • 946
    • 947
    • 948
    • 949
    • 950
    • 951

    用生成器生成代码
    在这里插入图片描述

    前端示例

    DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
        <title>BTWard供拷贝代码使用title>
        <link rel="shortcut icon" href="../../resource/common/images/favicon.ico" />
        <script src="../../resource/common/js/lis-commonHISUI.js" type="text/javascript">script>
        <script language="javascript" type="text/javascript">
            //LISSYSPageCommonInfo.Init();
            var BasePath = '';
            var ResourcePath = '';
            //var WebServicAddress = LISSYSPageCommonInfo.Data.WebServicAddress;
            //var UserDR = LISSYSPageCommonInfo.Data.Sesssion.UserDR;
            //var WorkGroupDR = LISSYSPageCommonInfo.Data.Sesssion.WorkGroupDR;
            //var sysTheme = LISSYSPageCommonInfo.Data.Sesssion.Theme;
            //var SessionStr = LISSYSPageCommonInfo.Data.SessionStr;
        script>
        <script type="text/javascript">
            //全局变量
            var me = {
                actionUrl: '../ashx/ashBTWard.ashx'
            };
    
            //jquery入口
            $(function () {
    
                //新增数据点击
                $("#btnAddBTWard").click(function () {
                    $("#txtBTWardRowID").val(""); 
    				$('#winEditBTWard').window({
                        title: TranslateDataMTHD('Add Data', '新增数据', ''),
                        modal: true
                    });
                });
    
    
                //修改数据点击
                $("#btnUpdateBTWard").click(function () {
    				UpdateBTWard();
                });
    
    			//修改数据
    			function UpdateBTWard(row)
    			{
                    var selectRow = $('#dgBTWard').datagrid("getSelected");
                    if(row!=null)
                    {
                    	selectRow=row;
                    }
                    if (selectRow == null) {
                        $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to modify', '请选择要修改的数据!', ''), 'info');
                        return;
                    }
    				$("#formBTWard").form('load', selectRow);
    				$('#winEditBTWard').window({
                        title: TranslateDataMTHD('Update Data', '修改数据', ''),
                        modal: true
                    });
    			}
    
    
    
                //删除数据点击
                $("#btnDeleteBTWard").click(function () {
                    var checkRow = $('#dgBTWard').datagrid("getChecked");
                    var selectRow = $('#dgBTWard').datagrid("getSelected");
                    if ((checkRow == null || checkRow.length == 0)&&selectRow==null) {
                        $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to delete', '请勾选要删除的数据!', ''), 'info');
                        return;
                    }
                    if ((checkRow == null || checkRow.length == 0)) {
                        checkRow=[selectRow];
                    }
                    var RowIDS = "";
                    for (var i = 0; i < checkRow.length; i++) {
                        if (i == 0) {
                            RowIDS = checkRow[i].RowID;
                        }
                        else {
                            RowIDS += "^" + checkRow[i].RowID;
                        }
                    }
                    $.messager.confirm(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Do you want to delete the selected data', '是否要删除选择的数据?', '') , function (r) {
                        if (r) {
                    		//开启等待
                    		$.messager.progress({ text: TranslateDataMTHD("Deleting data","正在删除数据", ""), interval: 500 });
                    		setTimeout(function () {
                        		$.messager.progress('close');
                    		}, 8000);
                    		//往后台提交数据
                    		$.ajax({
                        		type: "post",
                        		dataType: "json",
                        		cache: false, //
                        		async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir
                        		url: me.actionUrl + '?Method=DeleteBTWard',
                        		data: { RowIDS: RowIDS },
                        		success: function (data, status) {
                            		$.messager.progress('close');
                            		if (!FilterBackData(data)) {
                                		return;
                            		}
                            		if (!data.IsOk) {
                                		$.messager.alert(TranslateDataMTHD("Error message", "错误提示", ""), TranslateDataMTHD("failed to dalete data, error message:", "删除失败,错误信息:", "") + data.Message);
                            		}
                            		else {
                                		QryBTWard();
                                		$.messager.show({
                                    		title: TranslateDataMTHD("Info", "提示", ""),
                                   		 	msg: TranslateDataMTHD("Successfully deleted!", "删除成功!", ""),
                                    		timeout: 500,
                                    		showType: 'slide'
                                		});
                            		}
                        		}
                    		});
                        }
                    });
                });
    
    
                //保存数据
                $("#btnSaveBTWard").click(function () {
                    var saveData = jQuery.parseJSON($("#formBTWard").serializeObject());
                    //开启等待
                    $.messager.progress({ text: TranslateDataMTHD("Saving data","正在保存数据", ""), interval: 500 });
                    setTimeout(function () {
                        $.messager.progress('close');
                    }, 8000);
                    //往后台提交数据
                    $.ajax({
                        type: "post",
                        dataType: "json",
                        cache: false, //
                        async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir
                        url: me.actionUrl + '?Method=SaveBTWard',
                        data: saveData,
                        success: function (data, status) {
                            $.messager.progress('close');
                            if (!FilterBackData(data)) {
                                return;
                            }
                            if (!data.IsOk) {
                                $.messager.alert(TranslateDataMTHD("Error message", "错误提示", ""), TranslateDataMTHD("failed to dalete data, error message:", "删除失败,错误信息:", "") + data.Message);
                            }
                            else {
                                QryBTWard();
                                $.messager.show({
                                    title: TranslateDataMTHD("Info", "提示", ""),
                                    msg: TranslateDataMTHD("Successfully saveed!", "保存成功!", ""),
                                    timeout: 500,
                                    showType: 'slide'
                                });
                                $('#winEditBTWard').window("close");
                            }
                        }
                    });
                });
    
    
                //关闭窗口
                $("#btnCloseBTWard").click(function () {
    				$('#winEditBTWard').window("close");
                });
    
    
                //构造查询事件
                $("#txtFilterBTWard").searchbox({
                    searcher: function (value, name) {
                        QryBTWard();
                    },
                    prompt: TranslateDataMTHD('Enter query', '回车查询', '')
                });
    
    
    
                //临床科室下拉表格渲染
                $('#txtBTWardLocationDR').combogrid({
                    panelWidth: 350,
                    idField: 'RowID',
                    width: 205,
                    textField: 'CName',
                    url: me.actionUrl + '?Method=CommonQueryView&data='+JSON.stringify({ ModelName: "BTLocation", Pram: [], IsDisplayCount: false, Joiner: [], Operators: [] }),
                    columns: [[
                        { field: 'RowID', title: '主键', width: 60 },
                        { field: 'CName', title: '名称', width: 260 }
                    ]]
                });
                $('#txtBTWardLocationDR').combogrid("showSelectWin");
    
                //是否激活布尔渲染
                $('#txtBTWardActive').combobox({
                    valueField:'RowID',
                    textField:'CName',
                    width: 205,
                    data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
                });
    
                //BTWard表格
                $('#dgBTWard').datagrid({
                    remoteSort:false,
                    singleSelect: true,
                    toolbar: "#dgBTWardToolBar",
                    fit: true,
                    onSelect: function (index, row) {
                        //方便拷贝到子表查询用
                    	var selectBTWard=$('#dgBTWard').datagrid("getSelected");
                    },
                    onDblClickRow: function (index, row) {
                        UpdateBTWard(row);
                    },
    
                    columns: [[
                        { field: 'ChkFlag', title: TranslateDataMTHD('Check', '选择', ''), width: 20, sortable: true, align: 'center', checkbox: true },
                        { field: 'RowID', title: TranslateDataMTHD('RowID', '主键', '') , width: 150, sortable: true },
                        { field: 'Code', title: TranslateDataMTHD('Code', '代码', '') , width: 150, sortable: true },
                        { field: 'CName', title: TranslateDataMTHD('CName', '名称', '') , width: 150, sortable: true },
                        { field: 'HISCode', title: TranslateDataMTHD('HISCode', 'HIS对照码', '') , width: 150, sortable: true },
                        { field: 'LocationDRName', title: TranslateDataMTHD('LocationDRName', '临床科室', '') , width: 150, sortable: true },
                        { field: 'Sequence', title: TranslateDataMTHD('Sequence', '序号', '') , width: 150, sortable: true },
                        { field: 'Active', title: TranslateDataMTHD('Active', '是否激活', '') , width: 150, sortable: true },
                        { field: 'PhoneNo', title: TranslateDataMTHD('PhoneNo', 'PhoneNo', '') , width: 150, sortable: true }
                    ]]
                });
    
    
                //查询BTWard
                function QryBTWard() {
                    var Filter = $("#txtFilterBTWard").searchbox("getValue");
                    //开启等待,默认注释,在单击事件调用的逻辑启用等待会冲掉双击事件,按需要开启
                    //$.messager.progress({ text: TranslateDataMTHD("Querying data","正在查询数据", ""), interval: 500 });
                    //setTimeout(function () {
                        //$.messager.progress('close');
                    //}, 8000);
                    $.ajax({
                        type: "post",
                        dataType: "json",
                        cache: false, //
                        async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir
                        url: me.actionUrl + '?Method=QryBTWard',
                        data: { Filter: Filter },
                        success: function (data, status) {
                            //结束等待
                            //$.messager.progress('close');
                            $('#dgBTWard').datagrid("loadData", data);
                        }
                    });
                };
    
    
                //执行查询数据
                QryBTWard();
    
    
    		});
        script>
    head>
    <body>
        <div class="hisui-layout" fit="true" style="border: none;">
            <div data-options="region:'center',title:''" style="border: none;">
                <div id="dgBTWardToolBar" style="padding: 3px 0px 3px 10px;">
                    <a id="btnAddBTWard" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-add'" plain="true" listranslate="html~Add">新增a>
                    <a id="btnUpdateBTWard" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-write-order'" plain="true" listranslate="html~Mod">修改a>
                    <a id="btnDeleteBTWard" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-cancel'" plain="true" listranslate="html~Del">删除a>
                    <input id="txtFilterBTWard" style="margin-left: 14px; width: 240px;">input>
                div>
                <table id="dgBTWard" title="" iconcls="icon-paper" listranslate="title~BTWard">table>
            div>
            <div id="winEditBTWard" style="padding: 10px 0px 0px 10px;width:770px;height:238px;">
                <form id="formBTWard" name="edit_form" method="post">
                    <input type="hidden" id="txtBTWardRowID" name="RowID" value="0" />
                    <table>
                        <tr>
                            <td class="lisar" listranslate="html~Code">代码td>
                            <td class="lisal"><input id="txtBTWardCode" type="text" name="Code" style="width:200px;" class="hisui-validatebox"  maxlength="10"/>td>
                            <td class="lisar" listranslate="html~CName">名称td>
                            <td class="lisal"><input id="txtBTWardCName" type="text" name="CName" style="width:200px;" class="hisui-validatebox"  maxlength="40"/>td>
                        tr>
                        <tr>
                            <td class="lisar" listranslate="html~HISCode">HIS对照码td>
                            <td class="lisal"><input id="txtBTWardHISCode" type="text" name="HISCode" style="width:200px;" class="hisui-validatebox"  maxlength="20"/>td>
                            <td class="lisar" listranslate="html~LocationDR">临床科室td>
                            <td class="lisal"><input id="txtBTWardLocationDR" type="text" name="LocationDR" style="width:200px;"/>td>
                        tr>
                        <tr>
                            <td class="lisar" listranslate="html~Sequence">序号td>
                            <td class="lisal"><input id="txtBTWardSequence" type="text" name="Sequence" style="width:200px;" class="hisui-validatebox"  maxlength="10"/>td>
                            <td class="lisar" listranslate="html~Active">是否激活td>
                            <td class="lisal"><input id="txtBTWardActive" type="text" name="Active" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        tr>
                        <tr>
                            <td class="lisar" listranslate="html~PhoneNo">PhoneNotd>
                            <td class="lisal"><input id="txtBTWardPhoneNo" type="text" name="PhoneNo" style="width:200px;" class="hisui-validatebox"  maxlength="20"/>td>
                    table>
                    <div region="south" border="fale" style="text-align: center; padding: 5px 0 0;">
                        <a id="btnSaveBTWard" href="#" class="hisui-linkbutton" plain="false" listranslate="html~Save">保存a>
                        <span class="sp6">span>
                        <a id="btnCloseBTWard" href="#" class="hisui-linkbutton" plain="false" listranslate="html~Cancel">取消a>
                    div>
                form>
            div>
    body>
    html>
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305

    后台示例

    import appcode.BaseHttpHandlerNoSession;
    import appcode.Helper;
    import LIS.Core.Dto.HashParam;
    import LIS.Core.Dto.ParamDto;
    import LIS.Core.Dto.OutParam;
    import LIS.Model.Entity.*;
    import LIS.Core.Util.Convert;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
    *由代码生成器生成的后台代码
    */
    public class ashBTWard extends BaseHttpHandlerNoSession {
    
    	/**
    	 * 保存数据,前台按表的属性名提交
    	 * @return 字符串
    	 */
    	public String SaveBTWard()
        {
    		BTWard dto=new BTWard();
    		//RowID  
    		dto.RowID=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "RowID"), dto.RowID);
    		//代码  
    		dto.Code=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Code"), dto.Code);
    		//名称  
    		dto.CName=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "CName"), dto.CName);
    		//HIS对照码  
    		dto.HISCode=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "HISCode"), dto.HISCode);
    		//临床科室  
    		dto.LocationDR=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "LocationDR"), dto.LocationDR);
    		//序号  
    		dto.Sequence=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Sequence"), dto.Sequence);
    		//是否激活  {1:True,0:False}
    		dto.Active=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Active"), dto.Active);
    		//      
    		dto.PhoneNo=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "PhoneNo"), dto.PhoneNo);
    		OutParam out=new OutParam();
    		int ret=0;
    		//更新
    		if(dto.RowID>0)
    		{
    			ret=EntityManager().Update(dto,null, out, null, null, null);
    		}
    		//插入数据
    		else
    		{
    			ret=EntityManager().Save(dto,out);
    		}
    		if(ret==1)
    		{
    			return Helper.Success();
    		}
    		else
    		{
    			return Helper.Error(out);
    		}
        }
    
    
    
    	/**
    	 * 删除数据,多个RowID以上尖号分割
    	 * @return 字符串
    	 */
    	public String DeleteBTWard()
        {
    		String RowIDS=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "RowIDS"), "");
    		if(RowIDS.isEmpty())
    		{
    			return Helper.Error("请传入要删除数据的RowID,多个以^分割!");
    		}
    		//分割主键
    		String [] arr=RowIDS.split("^");
    		//创建一个空对象
    		BTWard dto=new BTWard();
    		//out参数
    		OutParam out=new OutParam();
    		//循环删除数据
    		for(int i=0;i<arr.length;i++)
    		{
    			HashParam hs=new HashParam();
    			hs.Add("RowID",Convert.ToInt32(arr[i]));
    			int ret=EntityManager().Remove(dto,hs,out,null,null);
    			if(ret!=1)
    			{
    				return Helper.Error(out);
    			}
    		}
    		return Helper.Success();
    	}
    
    
    
    	/**
    	 * 查询数据,前台按表的属性名提交
    	 * @return 字符串
    	 */
    	public String QryBTWard()
        {
    		//预留的取前台参数代码
    		//创建一个空对象
    		BTWard dto=new BTWard();
    		//参数
    		List<ParamDto> para=new ArrayList<>();
    		//sql连接符号
    		List<String> joiner=new ArrayList<>();
    		//sql比较符号
    		List<String> operators=new ArrayList<>();
    		//模糊查询
    		String Filter=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Filter"), "");
    		//预留参数
    		//RowID  
    		String RowID=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "RowID"), "");
    		//代码  
    		String Code=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Code"), "");
    		//名称  
    		String CName=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "CName"), "");
    		//HIS对照码  
    		String HISCode=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "HISCode"), "");
    		//临床科室  
    		String LocationDR=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "LocationDR"), "");
    		//序号  
    		String Sequence=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Sequence"), "");
    		//是否激活  {1:True,0:False}
    		String Active=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Active"), "");
    		//      
    		String PhoneNo=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "PhoneNo"), "");
    		//模糊查询
    		if(!Filter.isEmpty())
    		{
    			ParamDto p=null;
    			//代码  
    			p=new ParamDto();
    			p.Key="Code";
    			p.Value="%"+Filter+"%";
    			para.add(p);
    			joiner.add("or");
    			operators.add("like");
    			//名称  
    			p=new ParamDto();
    			p.Key="CName";
    			p.Value="%"+Filter+"%";
    			para.add(p);
    			joiner.add("or");
    			operators.add("like");
    			//HIS对照码  
    			p=new ParamDto();
    			p.Key="HISCode";
    			p.Value="%"+Filter+"%";
    			para.add(p);
    			joiner.add("or");
    			operators.add("like");
    			//      
    			p=new ParamDto();
    			p.Key="PhoneNo";
    			p.Value="%"+Filter+"%";
    			para.add(p);
    			joiner.add("or");
    			operators.add("like");
    		}
    		//调用查询
    		String json=EntityManager().QueryAllWithFK(dto,para,"",true,-1,-1,"",joiner,operators);
    		return json;
    	}
    
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171

    实体示例

    package LIS.Model.Entity;
    import LIS.Core.CustomAttributes.*;
    /**
    *[功能描述:本代码由LIS内部代码生成工具生成,请不要手动修改,如要修改,请写修改变更记录]
    *[创建者:LIS.Entity生成器]
    */
    @UniqueAttribute(ColNames = "RowID")
    @TableAttribute(Name="dbo.BT_Ward")
    public class BTWard
    {
    	/**
    	* RowID  
    	*/
    	@NotNullAttribute
    	@IdAttribute(Name = "RowID")
    	@LengthAttribute(MaxLen = 10)
    	public int RowID;
    
    	/**
    	* 代码  
    	*/
    	@NotNullAttribute
    	@LengthAttribute(MaxLen = 10)
    	public String Code;
    
    	/**
    	* 名称  
    	*/
    	@LengthAttribute(MaxLen = 40)
    	public String CName;
    
    	/**
    	* HIS对照码  
    	*/
    	@LengthAttribute(MaxLen = 20)
    	public String HISCode;
    
    	/**
    	* 临床科室  
    	*/
    	@FrekeyAttribute(Name = "BTLocation", RefColumnName = "RowID", AssociaField = "CName")
    	@LengthAttribute(MaxLen = 10)
    	public int LocationDR;
    
    	/**
    	* 序号  
    	*/
    	@LengthAttribute(MaxLen = 10)
    	public int Sequence;
    
    	/**
    	* 是否激活  {1:True,0:False}
    	*/
    	@LengthAttribute(MaxLen = 1)
    	public boolean Active;
    
    	/**
    	*       
    	*/
    	@LengthAttribute(MaxLen = 20)
    	public String PhoneNo;
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64

    生成之后投放网站
    在这里插入图片描述

    测试效果
    在这里插入图片描述

    然后发布到Linux,先把Linux上的JDK升级到JDK17,再更新程序

    [BEGIN] 2023/11/10 20:40:45
    [root@localhost ~]# tar -xzvf graalvm-jdk-17.0.9_linux-x64_bin.tar.gz
    tar (child): graalvm-jdk-17.0.9_linux-x64_bin.tar.gz: Cannot open: No such file or directory
    tar (child): Error is not recoverable: exiting now
    tar: Child returned status 2
    tar: Error is not recoverable: exiting now
    [root@localhost ~]# cd /
    [root@localhost /]# tar -xzvf graalvm-jdk-17.0.9_linux-x64_bin.tar.gz
    graalvm-jdk-17.0.9+11.1/license-information-user-manual.zip
    graalvm-jdk-17.0.9+11.1/GRAALVM-README.md
    graalvm-jdk-17.0.9+11.1/LICENSE.txt
    graalvm-jdk-17.0.9+11.1/bin/gu
    graalvm-jdk-17.0.9+11.1/lib/installer/installer.jar
    graalvm-jdk-17.0.9+11.1/lib/installer/trufflejson.jar
    graalvm-jdk-17.0.9+11.1/lib/installer/components/polyglot/.registry
    graalvm-jdk-17.0.9+11.1/lib/installer/installer-ee.jar
    graalvm-jdk-17.0.9+11.1/lib/installer/redline-rpm-1.2.10.jar
    graalvm-jdk-17.0.9+11.1/lib/installer/slf4j-jdk4-1.7.30.jar
    graalvm-jdk-17.0.9+11.1/lib/installer/slf4j-api-1.7.30.jar
    graalvm-jdk-17.0.9+11.1/lib/installer/apache-commons-compress-1.21.jar
    graalvm-jdk-17.0.9+11.1/lib/installer/bcprov-1.69-dist.jar
    graalvm-jdk-17.0.9+11.1/lib/installer/bcpg-1.69-dist.jar
    graalvm-jdk-17.0.9+11.1/lib/installer/gu_uln_key.asc
    graalvm-jdk-17.0.9+11.1/lib/installer/components/licenses/.registry
    graalvm-jdk-17.0.9+11.1/lib/installer/bin/gu
    graalvm-jdk-17.0.9+11.1/lib/installer/components/org.graalvm.component
    graalvm-jdk-17.0.9+11.1/lib/installer/components/org.graalvm.native-image.component
    graalvm-jdk-17.0.9+11.1/bin/native-image-inspect
    graalvm-jdk-17.0.9+11.1/bin/native-image
    graalvm-jdk-17.0.9+11.1/bin/native-image-configure
    graalvm-jdk-17.0.9+11.1/bin/polyglot
    graalvm-jdk-17.0.9+11.1/bin/rebuild-images
    graalvm-jdk-17.0.9+11.1/jmods/java.base.jmod
    graalvm-jdk-17.0.9+11.1/languages/nfi-libffi/truffle-nfi-libffi.jar
    graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/libffi.a
    graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/include/ffi.h
    graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/include/ffitarget.h
    graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/include/svm_libffi.h
    graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/include/trufflenfi.h
    graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-none/.empty.h
    graalvm-jdk-17.0.9+11.1/languages/nfi/builder/svm-none.jar
    graalvm-jdk-17.0.9+11.1/languages/nfi/native-image.properties
    graalvm-jdk-17.0.9+11.1/languages/nfi/truffle-nfi-none.jar
    graalvm-jdk-17.0.9+11.1/languages/nfi/native-image-resources.filelist
    graalvm-jdk-17.0.9+11.1/languages/nfi/truffle-nfi.jar
    graalvm-jdk-17.0.9+11.1/languages/nfi/include/trufflenfi.h
    graalvm-jdk-17.0.9+11.1/languages/nfi/builder/svm-libffi.jar
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libattach.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libawt.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libawt_headless.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libawt_xawt.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libdt_socket.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libextnet.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libfdlibm.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libfontmanager.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libinstrument.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libj2gss.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libj2pcsc.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libj2pkcs11.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjaas.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjava.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjavajpeg.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjawt.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjdwp.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjimage.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjli.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjpackageapplauncher.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjpackageapplauncheraux.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjsig.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjsound.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjsvml.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/liblcms.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libmanagement.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libmanagement_agent.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libmanagement_ext.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libmlib_image.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libnet.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libnio.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libprefs.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/librmi.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libsaproc.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libsctp.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libsplashscreen.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libsyslookup.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libverify.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libzip.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libattach.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libawt.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libawt_headless.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libawt_xawt.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libdt_socket.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libextnet.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libfdlibm.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libfontmanager.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libinstrument.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libj2gss.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libj2pcsc.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libj2pkcs11.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjaas.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjava.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjavajpeg.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjawt.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjdwp.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjimage.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjli.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjpackageapplauncher.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjpackageapplauncheraux.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjsig.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjsound.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjsvml.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/liblcms.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libmanagement.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libmanagement_agent.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libmanagement_ext.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libmlib_image.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libnet.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libnio.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libprefs.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/librmi.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libsaproc.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libsctp.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libsplashscreen.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libsyslookup.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libverify.a
    graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libzip.a
    graalvm-jdk-17.0.9+11.1/lib/libtrufflenfi.so
    graalvm-jdk-17.0.9+11.1/lib/graal/graal-processor.jar
    graalvm-jdk-17.0.9+11.1/lib/graalvm/launcher-common.jar
    graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-enterprise-configure.jar
    graalvm-jdk-17.0.9+11.1/lib/graalvm/jvmti-agent-base.jar
    graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-agent.jar
    graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-configure.jar
    graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-diagnostics-agent.jar
    graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-driver.jar
    graalvm-jdk-17.0.9+11.1/lib/jvm.cfg
    graalvm-jdk-17.0.9+11.1/lib/libjvmcicompiler.so
    graalvm-jdk-17.0.9+11.1/lib/libnative-image-agent.so
    graalvm-jdk-17.0.9+11.1/lib/libnative-image-diagnostics-agent.so
    graalvm-jdk-17.0.9+11.1/lib/polyglot/polyglot-native-api.jar
    graalvm-jdk-17.0.9+11.1/lib/polyglot/polyglot_types.h
    graalvm-jdk-17.0.9+11.1/lib/polyglot/bin/polyglot
    graalvm-jdk-17.0.9+11.1/lib/svm/bin/rebuild-images
    graalvm-jdk-17.0.9+11.1/lib/svm/library-support.jar
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/liblibchelper.a
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/aarch64cpufeatures.h
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/amd64cpufeatures.h
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/amd64hotspotcpuinfo.h
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/riscv64cpufeatures.h
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libjvm.a
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/lib/libreporterchelper.so
    graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/liblibchelper.a
    graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/aarch64cpufeatures.h
    graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/amd64cpufeatures.h
    graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/amd64hotspotcpuinfo.h
    graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/riscv64cpufeatures.h
    graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libjvm.a
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libjitdebug.a
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/jitdebug.h
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/debug/svmhelpers.py
    graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libjitdebug.a
    graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/jitdebug.h
    graalvm-jdk-17.0.9+11.1/lib/svm/debug/svmhelpers.py
    graalvm-jdk-17.0.9+11.1/lib/svm/profile_inference_model/model.onnx
    graalvm-jdk-17.0.9+11.1/lib/svm/profile_inference_model/preprocessing.onnx
    graalvm-jdk-17.0.9+11.1/lib/svm/profile_inference_model/dataset.config
    graalvm-jdk-17.0.9+11.1/lib/svm/adopted_profiles/jdk_profile.iprof
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libg1gc-cr.a
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libg1gc-ur.a
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libg1gc-musl-cr.a
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libg1gc-musl-ur.a
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/sharedGCStructs.hpp
    graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libg1gc-cr.a
    graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libg1gc-ur.a
    graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libg1gc-musl-cr.a
    graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libg1gc-musl-ur.a
    graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/sharedGCStructs.hpp
    graalvm-jdk-17.0.9+11.1/lib/svm/graal-microservices.jar
    graalvm-jdk-17.0.9+11.1/lib/svm/bin/native-image
    graalvm-jdk-17.0.9+11.1/lib/svm/bin/native-image-configure
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/svm.jar
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/objectfile.jar
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/pointsto.jar
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/native-image-base.jar
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/svm.src.zip
    graalvm-jdk-17.0.9+11.1/lib/svm/builder/svm-enterprise.jar
    graalvm-jdk-17.0.9+11.1/lib/svm/macros/gu-launcher/native-image.properties
    graalvm-jdk-17.0.9+11.1/lib/svm/macros/native-image-agent-library/native-image.properties
    graalvm-jdk-17.0.9+11.1/lib/svm/macros/native-image-configure-launcher/native-image.properties
    graalvm-jdk-17.0.9+11.1/lib/svm/macros/native-image-diagnostics-agent-library/native-image.properties
    graalvm-jdk-17.0.9+11.1/lib/svm/macros/native-image-launcher/native-image.properties
    graalvm-jdk-17.0.9+11.1/lib/svm/macros/polyglot-launcher/native-image.properties
    graalvm-jdk-17.0.9+11.1/lib/svm/macros/polyglot-library/native-image.properties
    graalvm-jdk-17.0.9+11.1/lib/svm/macros/polyglot-library/polynative-libpolyglot-macro.jar
    graalvm-jdk-17.0.9+11.1/lib/svm/macros/truffle-language-library/native-image.properties
    graalvm-jdk-17.0.9+11.1/lib/svm/macros/truffle/native-image.properties
    graalvm-jdk-17.0.9+11.1/lib/truffle/truffle-dsl-processor.jar
    graalvm-jdk-17.0.9+11.1/lib/truffle/truffle-tck.jar
    graalvm-jdk-17.0.9+11.1/lib/truffle/truffle-api.jar
    graalvm-jdk-17.0.9+11.1/lib/truffle/locator.jar
    graalvm-jdk-17.0.9+11.1/tools/chromeinspector/chromeinspector.jar
    graalvm-jdk-17.0.9+11.1/tools/chromeinspector/native-image.properties
    graalvm-jdk-17.0.9+11.1/tools/coverage/truffle-coverage.jar
    graalvm-jdk-17.0.9+11.1/tools/coverage/native-image.properties
    graalvm-jdk-17.0.9+11.1/tools/dap/dap.jar
    graalvm-jdk-17.0.9+11.1/tools/dap/native-image.properties
    graalvm-jdk-17.0.9+11.1/tools/insight/insight.jar
    graalvm-jdk-17.0.9+11.1/tools/insight/native-image.properties
    graalvm-jdk-17.0.9+11.1/tools/insightheap/insight-heap.jar
    graalvm-jdk-17.0.9+11.1/tools/insightheap/native-image.properties
    graalvm-jdk-17.0.9+11.1/tools/lsp/lsp-api.jar
    graalvm-jdk-17.0.9+11.1/tools/lsp/lsp.jar
    graalvm-jdk-17.0.9+11.1/tools/lsp/native-image.properties
    graalvm-jdk-17.0.9+11.1/tools/profiler/truffle-profiler.jar
    graalvm-jdk-17.0.9+11.1/tools/profiler/native-image.properties
    graalvm-jdk-17.0.9+11.1/tools/sandbox/graal-sandbox.jar
    graalvm-jdk-17.0.9+11.1/tools/sandbox/native-image.properties
    graalvm-jdk-17.0.9+11.1/release
    graalvm-jdk-17.0.9+11.1/lib/modules
    graalvm-jdk-17.0.9+11.1/lib/classlist
    graalvm-jdk-17.0.9+11.1/lib/jexec
    graalvm-jdk-17.0.9+11.1/lib/jrt-fs.jar
    graalvm-jdk-17.0.9+11.1/lib/jspawnhelper
    graalvm-jdk-17.0.9+11.1/lib/libjava.so
    graalvm-jdk-17.0.9+11.1/lib/libjimage.so
    graalvm-jdk-17.0.9+11.1/lib/libjli.so
    graalvm-jdk-17.0.9+11.1/lib/libjsig.so
    graalvm-jdk-17.0.9+11.1/lib/libnet.so
    graalvm-jdk-17.0.9+11.1/lib/libnio.so
    graalvm-jdk-17.0.9+11.1/lib/libverify.so
    graalvm-jdk-17.0.9+11.1/lib/libzip.so
    graalvm-jdk-17.0.9+11.1/lib/tzdb.dat
    graalvm-jdk-17.0.9+11.1/lib/libawt.so
    graalvm-jdk-17.0.9+11.1/lib/libawt_headless.so
    graalvm-jdk-17.0.9+11.1/lib/libawt_xawt.so
    graalvm-jdk-17.0.9+11.1/lib/libfontmanager.so
    graalvm-jdk-17.0.9+11.1/lib/libjavajpeg.so
    graalvm-jdk-17.0.9+11.1/lib/libjawt.so
    graalvm-jdk-17.0.9+11.1/lib/libjsound.so
    graalvm-jdk-17.0.9+11.1/lib/liblcms.so
    graalvm-jdk-17.0.9+11.1/lib/libmlib_image.so
    graalvm-jdk-17.0.9+11.1/lib/libsplashscreen.so
    graalvm-jdk-17.0.9+11.1/lib/psfont.properties.ja
    graalvm-jdk-17.0.9+11.1/lib/psfontj2d.properties
    graalvm-jdk-17.0.9+11.1/lib/libinstrument.so
    graalvm-jdk-17.0.9+11.1/lib/libmanagement.so
    graalvm-jdk-17.0.9+11.1/lib/libprefs.so
    graalvm-jdk-17.0.9+11.1/lib/librmi.so
    graalvm-jdk-17.0.9+11.1/lib/libj2gss.so
    graalvm-jdk-17.0.9+11.1/lib/libj2pcsc.so
    graalvm-jdk-17.0.9+11.1/lib/libattach.so
    graalvm-jdk-17.0.9+11.1/lib/ct.sym
    graalvm-jdk-17.0.9+11.1/lib/libj2pkcs11.so
    graalvm-jdk-17.0.9+11.1/lib/libsaproc.so
    graalvm-jdk-17.0.9+11.1/lib/libsyslookup.so
    graalvm-jdk-17.0.9+11.1/lib/libjsvml.so
    graalvm-jdk-17.0.9+11.1/lib/libdt_socket.so
    graalvm-jdk-17.0.9+11.1/lib/libjdwp.so
    graalvm-jdk-17.0.9+11.1/lib/libmanagement_ext.so
    graalvm-jdk-17.0.9+11.1/lib/libmanagement_agent.so
    graalvm-jdk-17.0.9+11.1/lib/libextnet.so
    graalvm-jdk-17.0.9+11.1/lib/libsctp.so
    graalvm-jdk-17.0.9+11.1/lib/libjaas.so
    graalvm-jdk-17.0.9+11.1/lib/src.zip
    graalvm-jdk-17.0.9+11.1/lib/security/blocked.certs
    graalvm-jdk-17.0.9+11.1/lib/security/cacerts
    graalvm-jdk-17.0.9+11.1/lib/security/default.policy
    graalvm-jdk-17.0.9+11.1/lib/security/public_suffix_list.dat
    graalvm-jdk-17.0.9+11.1/lib/server/libjsig.so
    graalvm-jdk-17.0.9+11.1/lib/server/libjvm.so
    graalvm-jdk-17.0.9+11.1/lib/server/classes.jsa
    graalvm-jdk-17.0.9+11.1/lib/jfr/default.jfc
    graalvm-jdk-17.0.9+11.1/lib/jfr/profile.jfc
    graalvm-jdk-17.0.9+11.1/conf/net.properties
    graalvm-jdk-17.0.9+11.1/conf/sound.properties
    graalvm-jdk-17.0.9+11.1/conf/logging.properties
    graalvm-jdk-17.0.9+11.1/conf/sdp/sdp.conf.template
    graalvm-jdk-17.0.9+11.1/conf/security/java.policy
    graalvm-jdk-17.0.9+11.1/conf/security/java.security
    graalvm-jdk-17.0.9+11.1/conf/security/policy/README.txt
    graalvm-jdk-17.0.9+11.1/conf/security/policy/limited/default_US_export.policy
    graalvm-jdk-17.0.9+11.1/conf/security/policy/limited/default_local.policy
    graalvm-jdk-17.0.9+11.1/conf/security/policy/limited/exempt_local.policy
    graalvm-jdk-17.0.9+11.1/conf/security/policy/unlimited/default_US_export.policy
    graalvm-jdk-17.0.9+11.1/conf/security/policy/unlimited/default_local.policy
    graalvm-jdk-17.0.9+11.1/conf/management/jmxremote.access
    graalvm-jdk-17.0.9+11.1/conf/management/jmxremote.password.template
    graalvm-jdk-17.0.9+11.1/conf/management/management.properties
    graalvm-jdk-17.0.9+11.1/include/classfile_constants.h
    graalvm-jdk-17.0.9+11.1/include/jni.h
    graalvm-jdk-17.0.9+11.1/include/jvmti.h
    graalvm-jdk-17.0.9+11.1/include/jvmticmlr.h
    graalvm-jdk-17.0.9+11.1/include/jawt.h
    graalvm-jdk-17.0.9+11.1/include/jdwpTransport.h
    graalvm-jdk-17.0.9+11.1/include/linux/jni_md.h
    graalvm-jdk-17.0.9+11.1/include/linux/jawt_md.h
    graalvm-jdk-17.0.9+11.1/man/man1/java.1
    graalvm-jdk-17.0.9+11.1/man/man1/keytool.1
    graalvm-jdk-17.0.9+11.1/man/man1/rmiregistry.1
    graalvm-jdk-17.0.9+11.1/man/man1/jrunscript.1
    graalvm-jdk-17.0.9+11.1/man/man1/kinit.1
    graalvm-jdk-17.0.9+11.1/man/man1/klist.1
    graalvm-jdk-17.0.9+11.1/man/man1/ktab.1
    graalvm-jdk-17.0.9+11.1/man/man1/jabswitch.1
    graalvm-jdk-17.0.9+11.1/man/man1/jaccessinspector.1
    graalvm-jdk-17.0.9+11.1/man/man1/jaccesswalker.1
    graalvm-jdk-17.0.9+11.1/man/man1/javac.1
    graalvm-jdk-17.0.9+11.1/man/man1/serialver.1
    graalvm-jdk-17.0.9+11.1/man/man1/jhsdb.1
    graalvm-jdk-17.0.9+11.1/man/man1/jar.1
    graalvm-jdk-17.0.9+11.1/man/man1/jarsigner.1
    graalvm-jdk-17.0.9+11.1/man/man1/javadoc.1
    graalvm-jdk-17.0.9+11.1/man/man1/jcmd.1
    graalvm-jdk-17.0.9+11.1/man/man1/jinfo.1
    graalvm-jdk-17.0.9+11.1/man/man1/jmap.1
    graalvm-jdk-17.0.9+11.1/man/man1/jps.1
    graalvm-jdk-17.0.9+11.1/man/man1/jstack.1
    graalvm-jdk-17.0.9+11.1/man/man1/jstat.1
    graalvm-jdk-17.0.9+11.1/man/man1/jconsole.1
    graalvm-jdk-17.0.9+11.1/man/man1/javap.1
    graalvm-jdk-17.0.9+11.1/man/man1/jdeprscan.1
    graalvm-jdk-17.0.9+11.1/man/man1/jdeps.1
    graalvm-jdk-17.0.9+11.1/man/man1/jdb.1
    graalvm-jdk-17.0.9+11.1/man/man1/jfr.1
    graalvm-jdk-17.0.9+11.1/man/man1/jlink.1
    graalvm-jdk-17.0.9+11.1/man/man1/jmod.1
    graalvm-jdk-17.0.9+11.1/man/man1/jpackage.1
    graalvm-jdk-17.0.9+11.1/man/man1/jshell.1
    graalvm-jdk-17.0.9+11.1/man/man1/jstatd.1
    graalvm-jdk-17.0.9+11.1/bin/java
    graalvm-jdk-17.0.9+11.1/bin/keytool
    graalvm-jdk-17.0.9+11.1/bin/rmiregistry
    graalvm-jdk-17.0.9+11.1/bin/jrunscript
    graalvm-jdk-17.0.9+11.1/bin/javac
    graalvm-jdk-17.0.9+11.1/bin/serialver
    graalvm-jdk-17.0.9+11.1/bin/jhsdb
    graalvm-jdk-17.0.9+11.1/bin/jar
    graalvm-jdk-17.0.9+11.1/bin/jarsigner
    graalvm-jdk-17.0.9+11.1/bin/javadoc
    graalvm-jdk-17.0.9+11.1/bin/jcmd
    graalvm-jdk-17.0.9+11.1/bin/jinfo
    graalvm-jdk-17.0.9+11.1/bin/jmap
    graalvm-jdk-17.0.9+11.1/bin/jps
    graalvm-jdk-17.0.9+11.1/bin/jstack
    graalvm-jdk-17.0.9+11.1/bin/jstat
    graalvm-jdk-17.0.9+11.1/bin/jconsole
    graalvm-jdk-17.0.9+11.1/bin/javap
    graalvm-jdk-17.0.9+11.1/bin/jdeprscan
    graalvm-jdk-17.0.9+11.1/bin/jdeps
    graalvm-jdk-17.0.9+11.1/bin/jdb
    graalvm-jdk-17.0.9+11.1/bin/jfr
    graalvm-jdk-17.0.9+11.1/bin/jimage
    graalvm-jdk-17.0.9+11.1/bin/jlink
    graalvm-jdk-17.0.9+11.1/bin/jmod
    graalvm-jdk-17.0.9+11.1/bin/jpackage
    graalvm-jdk-17.0.9+11.1/bin/jshell
    graalvm-jdk-17.0.9+11.1/bin/jstatd
    graalvm-jdk-17.0.9+11.1/legal/java.desktop/mesa3d.md
    graalvm-jdk-17.0.9+11.1/legal/java.desktop/lcms.md
    graalvm-jdk-17.0.9+11.1/legal/java.desktop/colorimaging.md
    graalvm-jdk-17.0.9+11.1/legal/java.desktop/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.desktop/xwd.md
    graalvm-jdk-17.0.9+11.1/legal/java.desktop/harfbuzz.md
    graalvm-jdk-17.0.9+11.1/legal/java.desktop/jpeg.md
    graalvm-jdk-17.0.9+11.1/legal/java.desktop/libpng.md
    graalvm-jdk-17.0.9+11.1/legal/java.desktop/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.desktop/giflib.md
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.opt/jopt-simple.md
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.opt/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.opt/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.cryptoki/pkcs11cryptotoken.md
    graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.cryptoki/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.cryptoki/pkcs11wrapper.md
    graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.cryptoki/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.xml/bcel.md
    graalvm-jdk-17.0.9+11.1/legal/java.xml/jcup.md
    graalvm-jdk-17.0.9+11.1/legal/java.xml/xerces.md
    graalvm-jdk-17.0.9+11.1/legal/java.xml/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.xml/xalan.md
    graalvm-jdk-17.0.9+11.1/legal/java.xml/dom.md
    graalvm-jdk-17.0.9+11.1/legal/java.xml/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.dynalink/dynalink.md
    graalvm-jdk-17.0.9+11.1/legal/jdk.dynalink/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.dynalink/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.smartcardio/pcsclite.md
    graalvm-jdk-17.0.9+11.1/legal/java.smartcardio/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.smartcardio/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.javadoc/jqueryUI.md
    graalvm-jdk-17.0.9+11.1/legal/jdk.javadoc/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.javadoc/jquery.md
    graalvm-jdk-17.0.9+11.1/legal/jdk.javadoc/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.base/aes.md
    graalvm-jdk-17.0.9+11.1/legal/java.base/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.base/icu.md
    graalvm-jdk-17.0.9+11.1/legal/java.base/c-libutl.md
    graalvm-jdk-17.0.9+11.1/legal/java.base/cldr.md
    graalvm-jdk-17.0.9+11.1/legal/java.base/asm.md
    graalvm-jdk-17.0.9+11.1/legal/java.base/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.base/public_suffix.md
    graalvm-jdk-17.0.9+11.1/legal/java.base/unicode.md
    graalvm-jdk-17.0.9+11.1/legal/java.logging/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.logging/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.management/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.management/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.ci/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.ci/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.compiler/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.compiler/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.instrument/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.instrument/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.jfr/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.jfr/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.unsupported/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.unsupported/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.datatransfer/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.datatransfer/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.prefs/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.prefs/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.transaction.xa/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.transaction.xa/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.sql/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.sql/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.management/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.management/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.compiler/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.compiler/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.security.sasl/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.security.sasl/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.naming/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.naming/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.rmi/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.rmi/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.management.rmi/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.management.rmi/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.net.http/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.net.http/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.scripting/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.scripting/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.security.jgss/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.security.jgss/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.sql.rowset/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.sql.rowset/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.xml.crypto/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.xml.crypto/santuario.md
    graalvm-jdk-17.0.9+11.1/legal/java.xml.crypto/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/java.se/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/java.se/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.accessibility/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.accessibility/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.jvmstat/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.jvmstat/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.attach/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.attach/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.charsets/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.charsets/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.compiler/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.compiler/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.ec/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.ec/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.ed/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.ed/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.editpad/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.editpad/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.hotspot.agent/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.hotspot.agent/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.httpserver/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.httpserver/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.incubator.foreign/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.incubator.foreign/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.incubator.vector/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.incubator.vector/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.le/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.le/jline.md
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.le/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.compiler.management/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.compiler.management/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.jartool/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.jartool/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.jcmd/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.jcmd/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.management.agent/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.management.agent/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.jconsole/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.jconsole/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.jdeps/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.jdeps/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.jdwp.agent/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.jdwp.agent/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.jdi/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.jdi/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.jlink/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.jlink/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.jpackage/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.jpackage/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.jshell/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.jshell/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.jsobject/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.jsobject/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.jstatd/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.jstatd/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.localedata/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.localedata/cldr.md
    graalvm-jdk-17.0.9+11.1/legal/jdk.localedata/thaidict.md
    graalvm-jdk-17.0.9+11.1/legal/jdk.localedata/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.management.jfr/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.management.jfr/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.naming.dns/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.naming.dns/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.naming.rmi/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.naming.rmi/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.net/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.net/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.nio.mapmode/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.nio.mapmode/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.random/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.random/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.sctp/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.sctp/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.security.auth/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.security.auth/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.security.jgss/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.security.jgss/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.unsupported.desktop/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.unsupported.desktop/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.xml.dom/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.xml.dom/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/legal/jdk.zipfs/LICENSE
    graalvm-jdk-17.0.9+11.1/legal/jdk.zipfs/COPYRIGHT
    graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.vm.compiler.management.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.crypto.ec.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.transaction.xa.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.jcmd.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.security.sasl.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.security.jgss.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.hotspot.agent.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.management.jfr.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.security.jgss.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.accessibility.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.management.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.net.http.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.management.agent.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.naming.dns.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.jlink.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.jpackage.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.management.rmi.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.jartool.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.net.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.jconsole.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.jvmstat.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.naming.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.charsets.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.sql.rowset.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.sctp.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.vm.ci.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.compiler.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.zipfs.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.jfr.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.editpad.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.xml.dom.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.jsobject.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.unsupported.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.smartcardio.jmod
    graalvm-jdk-17.0.9+11.1/jmods/com.oracle.svm.extraimage_enterprise.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.scripting.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.naming.rmi.jmod
    graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.sdk.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.random.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.ed.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.attach.jmod
    graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.js.scriptengine.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.jstatd.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.security.auth.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.sql.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.incubator.vector.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.rmi.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.jshell.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.opt.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.datatransfer.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.desktop.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.compiler.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.management.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.jdi.jmod
    graalvm-jdk-17.0.9+11.1/jmods/com.oracle.graal.graal_enterprise.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.nio.mapmode.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.httpserver.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.xml.crypto.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.javadoc.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.dynalink.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.localedata.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.vm.compiler.jmod
    graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.locator.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.vm.compiler.truffle.jfr.jmod
    graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.truffle.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.prefs.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.le.jmod
    graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.extraimage.builder.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.xml.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.instrument.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.jdwp.agent.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.crypto.cryptoki.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.se.jmod
    graalvm-jdk-17.0.9+11.1/jmods/java.logging.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.jdeps.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.incubator.foreign.jmod
    graalvm-jdk-17.0.9+11.1/jmods/jdk.unsupported.desktop.jmod
    [root@localhost /]# mkdir jdk17
    [root@localhost /]# cp -rf /graalvm-jdk-17.0.9+11.1/* /jdk17
    [root@localhost /]# vim /etc/profile
    -bash: vim: command not found
    [root@localhost /]# vi /etc/profile
    [root@localhost /]# 
    [root@localhost /]# 
    [root@localhost /]# cat /etc/profile
    # /etc/profile
    
    # System wide environment and startup programs, for login setup
    # Functions and aliases go in /etc/bashrc
    
    # It's NOT a good idea to change this file unless you know what you
    # are doing. It's much better to create a custom.sh shell script in
    # /etc/profile.d/ to make custom changes to your environment, as this
    # will prevent the need for merging in future updates.
    
    pathmunge () {
        case ":${PATH}:" in
            *:"$1":*)
                ;;
            *)
                if [ "$2" = "after" ] ; then
                    PATH=$PATH:$1
                else
                    PATH=$1:$PATH
                fi
        esac
    }
    
    
    if [ -x /usr/bin/id ]; then
        if [ -z "$EUID" ]; then
            # ksh workaround
            EUID=`/usr/bin/id -u`
            UID=`/usr/bin/id -ru`
        fi
        USER="`/usr/bin/id -un`"
        LOGNAME=$USER
        MAIL="/var/spool/mail/$USER"
    fi
    
    # Path manipulation
    if [ "$EUID" = "0" ]; then
        pathmunge /usr/sbin
        pathmunge /usr/local/sbin
    else
        pathmunge /usr/local/sbin after
        pathmunge /usr/sbin after
    fi
    
    HOSTNAME=`/usr/bin/hostname 2>/dev/null`
    HISTSIZE=1000
    if [ "$HISTCONTROL" = "ignorespace" ] ; then
        export HISTCONTROL=ignoreboth
    else
        export HISTCONTROL=ignoredups
    fi
    
    export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
    
    # By default, we want umask to get set. This sets it for login shell
    # Current threshold for system reserved uid/gids is 200
    # You could check uidgid reservation validity in
    # /usr/share/doc/setup-*/uidgid file
    if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
        umask 002
    else
        umask 022
    fi
    
    for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
        if [ -r "$i" ]; then
            if [ "${-#*i}" != "$-" ]; then 
                . "$i"
            else
                . "$i" >/dev/null
            fi
        fi
    done
    
    unset i
    unset -f pathmunge
    
    export PGHOME=/usr/local/postgresql
    export PGDATA=/data/pgdata/data
    export PGLIB=/usr/local/postgresql/lib
    export LC_ALL=en_US.UTF8
    export LANG=en_US.UTF8
    PATH=/usr/local/postgres/bin:$PATH
    export PATH
    export PATH=$PATH:/cmake-3.27.0-linux-x86_64/bin
    source /opt/rh/devtoolset-9/enable
    export JAVA_HOME=/jdk17
    export PATH=$PATH:$JAVA_HOME/bin
    [root@localhost /]# source /etc/profile
    [root@localhost /]# java -version
    java version "17.0.9" 2023-10-17 LTS
    Java(TM) SE Runtime Environment Oracle GraalVM 17.0.9+11.1 (build 17.0.9+11-LTS-jvmci-23.0-b21)
    Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 17.0.9+11.1 (build 17.0.9+11-LTS-jvmci-23.0-b21, mixed mode, sharing)
    [root@localhost /]# bash /WebSrc/bin/startup.sh
    Cannot find /WebSrc/bin/catalina.sh
    The file is absent or does not have execute permission
    This file is needed to run this program
    [root@localhost /]# chmod +x /WebSrc/bin/startup.sh
    [root@localhost /]# chmod +x /WebSrc/bin/shutdown.sh
    [root@localhost /]# chmod +x /WebSrc/bin/catalina.sh
    [root@localhost /]# chmod -R +777 /WebSrc
    [root@localhost /]# bash /WebSrc/bin/startup.sh
    Using CATALINA_BASE:   /WebSrc
    Using CATALINA_HOME:   /WebSrc
    Using CATALINA_TMPDIR: /WebSrc/temp
    Using JRE_HOME:        /jdk17
    Using CLASSPATH:       /WebSrc/bin/bootstrap.jar:/WebSrc/bin/tomcat-juli.jar
    Using CATALINA_OPTS:   
    Tomcat started.
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321
    • 322
    • 323
    • 324
    • 325
    • 326
    • 327
    • 328
    • 329
    • 330
    • 331
    • 332
    • 333
    • 334
    • 335
    • 336
    • 337
    • 338
    • 339
    • 340
    • 341
    • 342
    • 343
    • 344
    • 345
    • 346
    • 347
    • 348
    • 349
    • 350
    • 351
    • 352
    • 353
    • 354
    • 355
    • 356
    • 357
    • 358
    • 359
    • 360
    • 361
    • 362
    • 363
    • 364
    • 365
    • 366
    • 367
    • 368
    • 369
    • 370
    • 371
    • 372
    • 373
    • 374
    • 375
    • 376
    • 377
    • 378
    • 379
    • 380
    • 381
    • 382
    • 383
    • 384
    • 385
    • 386
    • 387
    • 388
    • 389
    • 390
    • 391
    • 392
    • 393
    • 394
    • 395
    • 396
    • 397
    • 398
    • 399
    • 400
    • 401
    • 402
    • 403
    • 404
    • 405
    • 406
    • 407
    • 408
    • 409
    • 410
    • 411
    • 412
    • 413
    • 414
    • 415
    • 416
    • 417
    • 418
    • 419
    • 420
    • 421
    • 422
    • 423
    • 424
    • 425
    • 426
    • 427
    • 428
    • 429
    • 430
    • 431
    • 432
    • 433
    • 434
    • 435
    • 436
    • 437
    • 438
    • 439
    • 440
    • 441
    • 442
    • 443
    • 444
    • 445
    • 446
    • 447
    • 448
    • 449
    • 450
    • 451
    • 452
    • 453
    • 454
    • 455
    • 456
    • 457
    • 458
    • 459
    • 460
    • 461
    • 462
    • 463
    • 464
    • 465
    • 466
    • 467
    • 468
    • 469
    • 470
    • 471
    • 472
    • 473
    • 474
    • 475
    • 476
    • 477
    • 478
    • 479
    • 480
    • 481
    • 482
    • 483
    • 484
    • 485
    • 486
    • 487
    • 488
    • 489
    • 490
    • 491
    • 492
    • 493
    • 494
    • 495
    • 496
    • 497
    • 498
    • 499
    • 500
    • 501
    • 502
    • 503
    • 504
    • 505
    • 506
    • 507
    • 508
    • 509
    • 510
    • 511
    • 512
    • 513
    • 514
    • 515
    • 516
    • 517
    • 518
    • 519
    • 520
    • 521
    • 522
    • 523
    • 524
    • 525
    • 526
    • 527
    • 528
    • 529
    • 530
    • 531
    • 532
    • 533
    • 534
    • 535
    • 536
    • 537
    • 538
    • 539
    • 540
    • 541
    • 542
    • 543
    • 544
    • 545
    • 546
    • 547
    • 548
    • 549
    • 550
    • 551
    • 552
    • 553
    • 554
    • 555
    • 556
    • 557
    • 558
    • 559
    • 560
    • 561
    • 562
    • 563
    • 564
    • 565
    • 566
    • 567
    • 568
    • 569
    • 570
    • 571
    • 572
    • 573
    • 574
    • 575
    • 576
    • 577
    • 578
    • 579
    • 580
    • 581
    • 582
    • 583
    • 584
    • 585
    • 586
    • 587
    • 588
    • 589
    • 590
    • 591
    • 592
    • 593
    • 594
    • 595
    • 596
    • 597
    • 598
    • 599
    • 600
    • 601
    • 602
    • 603
    • 604
    • 605
    • 606
    • 607
    • 608
    • 609
    • 610
    • 611
    • 612
    • 613
    • 614
    • 615
    • 616
    • 617
    • 618
    • 619
    • 620
    • 621
    • 622
    • 623
    • 624
    • 625
    • 626
    • 627
    • 628
    • 629
    • 630
    • 631
    • 632
    • 633
    • 634
    • 635
    • 636
    • 637
    • 638
    • 639
    • 640
    • 641
    • 642
    • 643
    • 644
    • 645
    • 646
    • 647
    • 648
    • 649
    • 650
    • 651
    • 652
    • 653
    • 654
    • 655
    • 656
    • 657
    • 658
    • 659
    • 660
    • 661
    • 662
    • 663
    • 664
    • 665
    • 666
    • 667
    • 668
    • 669
    • 670
    • 671
    • 672
    • 673
    • 674
    • 675
    • 676
    • 677
    • 678
    • 679
    • 680
    • 681
    • 682
    • 683
    • 684
    • 685
    • 686
    • 687
    • 688
    • 689
    • 690
    • 691
    • 692
    • 693
    • 694
    • 695
    • 696
    • 697
    • 698
    • 699
    • 700
    • 701
    • 702
    • 703
    • 704
    • 705
    • 706
    • 707
    • 708
    • 709
    • 710
    • 711
    • 712
    • 713
    • 714
    • 715
    • 716
    • 717
    • 718
    • 719
    • 720
    • 721
    • 722

    在这里插入图片描述

    测试
    在这里插入图片描述

    log4j写的日志
    在这里插入图片描述
    脚本化的体现
    在这里插入图片描述

    至此,框架开始成体系,借助了一下现有静态资源测试,谁识货就卖给谁,包括我自己。不要给我谈什么spring,十年前我刚出来就是spring的狂热粉丝,极力推荐spring的人,当时和领导爬山我还各种给他介绍spring,ioc,aop这些。后面实践证明对服务型系统根本用不上,spring不可谓不精美,但是太庞大,适合产品型软件。虽然不用spring,但是容器解耦的理念框架还是离不开,我还是实现了微型容器供系统使用。也不要吹什么微服务,你能有多微,有我这每个脚本改了立马生效微吗?也不要提什么云、容器,发布而已。没有华丽的api文档,没有高大上的PPT介绍,有的只是朴实无华结构和api,和为开发便捷性和低成本的考虑。如果谁和我的目标契合,留言联系我。反互联网常规套路,在服务型软件行业取得优势。

  • 相关阅读:
    可恶,又是个线上问题!
    (二)Three光线检测-实现摄像机向鼠标点击位置滑动动画
    InnoDB数据页结构(1)环境搭建
    【C++笔记】C++string类模拟实现
    Docker 系列之 DockerDesktop 常用第三方应用安装以及命令解释
    IO流思维导图
    Spring aop的简化版本
    03. Python中的语句
    前端性能优化——渲染优化
    OceanBase社区版4.0,给了我很多惊喜
  • 原文地址:https://blog.csdn.net/zhanglianzhu_91/article/details/134341297