上一篇说到通用码表可以解决百分之八十的基础维护功能,剩下的百分二十的需要级联维护的界面可以用代码生成器生成代码,基于生成的代码拷贝再组装界面,来解决这百分之二十的工作量里的百分之八十工作量。
首先实现代码生成器
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," " _TableInnerName_"供拷贝代码使用")
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," "dg"_TableInnerName_"ToolBar"" style=""padding: 3px 0px 3px 10px;"">")
d ..WriteLineWithCode(file," "btnAdd"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" data-options=""iconCls:'icon-add'"" plain=""true"" listranslate=""html~Add"">新增")
d ..WriteLineWithCode(file," "btnUpdate"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" data-options=""iconCls:'icon-write-order'"" plain=""true"" listranslate=""html~Mod"">修改")
d ..WriteLineWithCode(file," "btnDelete"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" data-options=""iconCls:'icon-cancel'"" plain=""true"" listranslate=""html~Del"">删除")
d ..WriteLineWithCode(file," "txtFilter"_TableInnerName_""" style=""margin-left: 14px; width: 240px;"">")
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," _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," "lisar"" listranslate=""html~"_colName_""">"_remark_" ")
.//外键参照信息
.s refInfo=..GetForeignKeyInfo(colName,TableName)
.//有外键
.i $l(refInfo) d
..d ..WriteLineWithCode(file," "lisal"">"txt"_TableInnerName_colName_""" type=""text"" name="""_colName_""" style=""width:200px;""/> ")
.//没外键
.e d
..d ..WriteLineWithCode(file," "lisal"">"txt"_TableInnerName_colName_""" type=""text"" name="""_colName_""" style=""width:200px;"" class=""hisui-validatebox"" maxlength="""_colLen_"""/> ")
.i (ColNum=1)||((outColNum#ColNum) =0)||(outColNum=allColNum) d
..d ..WriteLineWithCode(file," ")
d ..WriteLineWithCode(file,"
")
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
}
}
前端示例
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>
后台示例
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;
}
}
实体示例
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;
}
然后发布到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.
至此,框架开始成体系,借助了一下现有静态资源测试,谁识货就卖给谁,包括我自己。不要给我谈什么spring,十年前我刚出来就是spring的狂热粉丝,极力推荐spring的人,当时和领导爬山我还各种给他介绍spring,ioc,aop这些。后面实践证明对服务型系统根本用不上,spring不可谓不精美,但是太庞大,适合产品型软件。虽然不用spring,但是容器解耦的理念框架还是离不开,我还是实现了微型容器供系统使用。也不要吹什么微服务,你能有多微,有我这每个脚本改了立马生效微吗?也不要提什么云、容器,发布而已。没有华丽的api文档,没有高大上的PPT介绍,有的只是朴实无华结构和api,和为开发便捷性和低成本的考虑。如果谁和我的目标契合,留言联系我。反互联网常规套路,在服务型软件行业取得优势。