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=0While(rset1.Next()){s colField=rset1.GetColumnName(1)s ColValue=rset1.GetDataByName(colField)i $e(ColValue,1,2)="V_" continues makeRet= ..MakeModelCodeJava(ColValue,"LIS.ModelJava\")zw ColValuezw 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=1s 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<arr.length;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<ParamDto> para=new ArrayList<>();")d ..WriteLineWithCode(file,"		//sql连接符号")d ..WriteLineWithCode(file,"		List<String> joiner=new ArrayList<>();")d ..WriteLineWithCode(file,"		//sql比较符号")d ..WriteLineWithCode(file,"		List<String> 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" continued ..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 "代码生成在:"_logNameq "完成"
}/// 构造表的增删改查的界面代码,以简化常规表界面代码工作量
/// 编码格式改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=1s 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" continues RowSpec=RowSpec_","_colNames type=colTypei 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_","_colLens colDesc=$tr(colDesc," ")i '$l(colDesc) s colDesc=colNames RowRemark=RowRemark_$c(2)_$p($p($p($p($p($p(colDesc," ",1),";",1),"{",1)," ",1),"	",1),"(",1)s types=types_","_type}//写类头部d ..WriteLineWithCode(file,"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">")d ..WriteLineWithCode(file,"<html xmlns=""http://www.w3.org/1999/xhtml"">")d ..WriteLineWithCode(file,"<head>")d ..WriteLineWithCode(file,"    <meta http-equiv=""Content-Type"" content=""text/html;charset=utf-8"" />")d ..WriteLineWithCode(file,"    <title>"_TableInnerName_"供拷贝代码使用</title>")d ..WriteLineWithCode(file,"    <link rel=""shortcut icon"" href=""../../resource/common/images/favicon.ico"" />")d ..WriteLineWithCode(file,"    <script src=""../../resource/common/js/lis-commonHISUI.js"" type=""text/javascript""></script>")d ..WriteLineWithCode(file,"    <script language=""javascript"" type=""text/javascript"">")d ..WriteLineWithCode(file,"        //LISSYSPageCommonInfo.Init();")d ..WriteLineWithCode(file,"        var BasePath = '';")d ..WriteLineWithCode(file,"        var ResourcePath = '';")d ..WriteLineWithCode(file,"        //var WebServicAddress = LISSYSPageCommonInfo.Data.WebServicAddress;")d ..WriteLineWithCode(file,"        //var UserDR = LISSYSPageCommonInfo.Data.Sesssion.UserDR;")d ..WriteLineWithCode(file,"        //var WorkGroupDR = LISSYSPageCommonInfo.Data.Sesssion.WorkGroupDR;")d ..WriteLineWithCode(file,"        //var sysTheme = LISSYSPageCommonInfo.Data.Sesssion.Theme;")d ..WriteLineWithCode(file,"        //var SessionStr = LISSYSPageCommonInfo.Data.SessionStr;")d ..WriteLineWithCode(file,"    </script>")d ..WriteLineWithCode(file,"    <script type=""text/javascript"">")d ..WriteLineWithCode(file,"        //全局变量")d ..WriteLineWithCode(file,"        var me = {")d ..WriteLineWithCode(file,"            actionUrl: '../ashx/ash"_TableInnerName_".ashx'")d ..WriteLineWithCode(file,"        };")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"        //jquery入口")d ..WriteLineWithCode(file,"        $(function () {")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"            //新增数据点击")d ..WriteLineWithCode(file,"            $(""#btnAdd"_TableInnerName_""").click(function () {")d ..WriteLineWithCode(file,"                $(""#txt"_TableInnerName_"RowID"").val(""""); ")d ..WriteLineWithCode(file,"				$('#winEdit"_TableInnerName_"').window({")d ..WriteLineWithCode(file,"                    title: TranslateDataMTHD('Add Data', '新增数据', ''),")d ..WriteLineWithCode(file,"                    modal: true")d ..WriteLineWithCode(file,"                });")d ..WriteLineWithCode(file,"            });")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"            //修改数据点击")d ..WriteLineWithCode(file,"            $(""#btnUpdate"_TableInnerName_""").click(function () {")d ..WriteLineWithCode(file,"				Update"_TableInnerName_"();")d ..WriteLineWithCode(file,"            });")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"			//修改数据")d ..WriteLineWithCode(file,"			function Update"_TableInnerName_"(row)")d ..WriteLineWithCode(file,"			{")d ..WriteLineWithCode(file,"                var selectRow = $('#dg"_TableInnerName_"').datagrid(""getSelected"");")d ..WriteLineWithCode(file,"                if(row!=null)")d ..WriteLineWithCode(file,"                {")d ..WriteLineWithCode(file,"                	selectRow=row;")d ..WriteLineWithCode(file,"                }")d ..WriteLineWithCode(file,"                if (selectRow == null) {")d ..WriteLineWithCode(file,"                    $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to modify', '请选择要修改的数据!', ''), 'info');")d ..WriteLineWithCode(file,"                    return;")d ..WriteLineWithCode(file,"                }")d ..WriteLineWithCode(file,"				$(""#form"_TableInnerName_""").form('load', selectRow);")d ..WriteLineWithCode(file,"				$('#winEdit"_TableInnerName_"').window({")d ..WriteLineWithCode(file,"                    title: TranslateDataMTHD('Update Data', '修改数据', ''),")d ..WriteLineWithCode(file,"                    modal: true")d ..WriteLineWithCode(file,"                });")d ..WriteLineWithCode(file,"			}")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"            //删除数据点击")d ..WriteLineWithCode(file,"            $(""#btnDelete"_TableInnerName_""").click(function () {")d ..WriteLineWithCode(file,"                var checkRow = $('#dg"_TableInnerName_"').datagrid(""getChecked"");")d ..WriteLineWithCode(file,"                var selectRow = $('#dg"_TableInnerName_"').datagrid(""getSelected"");")d ..WriteLineWithCode(file,"                if ((checkRow == null || checkRow.length == 0)&&selectRow==null) {")d ..WriteLineWithCode(file,"                    $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to delete', '请勾选要删除的数据!', ''), 'info');")d ..WriteLineWithCode(file,"                    return;")d ..WriteLineWithCode(file,"                }")d ..WriteLineWithCode(file,"                if ((checkRow == null || checkRow.length == 0)) {")d ..WriteLineWithCode(file,"                    checkRow=[selectRow];")d ..WriteLineWithCode(file,"                }")d ..WriteLineWithCode(file,"                var RowIDS = """";")d ..WriteLineWithCode(file,"                for (var i = 0; i < checkRow.length; i++) {")d ..WriteLineWithCode(file,"                    if (i == 0) {")d ..WriteLineWithCode(file,"                        RowIDS = checkRow[i].RowID;")d ..WriteLineWithCode(file,"                    }")d ..WriteLineWithCode(file,"                    else {")d ..WriteLineWithCode(file,"                        RowIDS += ""^"" + checkRow[i].RowID;")d ..WriteLineWithCode(file,"                    }")d ..WriteLineWithCode(file,"                }")d ..WriteLineWithCode(file,"                $.messager.confirm(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Do you want to delete the selected data', '是否要删除选择的数据?', '') , function (r) {")d ..WriteLineWithCode(file,"                    if (r) {")d ..WriteLineWithCode(file,"                		//开启等待")d ..WriteLineWithCode(file,"                		$.messager.progress({ text: TranslateDataMTHD(""Deleting data"",""正在删除数据"", """"), interval: 500 });")d ..WriteLineWithCode(file,"                		setTimeout(function () {")d ..WriteLineWithCode(file,"                    		$.messager.progress('close');")d ..WriteLineWithCode(file,"                		}, 8000);")d ..WriteLineWithCode(file,"                		//往后台提交数据")d ..WriteLineWithCode(file,"                		$.ajax({")d ..WriteLineWithCode(file,"                    		type: ""post"",")d ..WriteLineWithCode(file,"                    		dataType: ""json"",")d ..WriteLineWithCode(file,"                    		cache: false, //")d ..WriteLineWithCode(file,"                    		async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir")d ..WriteLineWithCode(file,"                    		url: me.actionUrl + '?Method=Delete"_TableInnerName_"',")d ..WriteLineWithCode(file,"                    		data: { RowIDS: RowIDS },")d ..WriteLineWithCode(file,"                    		success: function (data, status) {")d ..WriteLineWithCode(file,"                        		$.messager.progress('close');")d ..WriteLineWithCode(file,"                        		if (!FilterBackData(data)) {")d ..WriteLineWithCode(file,"                            		return;")d ..WriteLineWithCode(file,"                        		}")d ..WriteLineWithCode(file,"                        		if (!data.IsOk) {")d ..WriteLineWithCode(file,"                            		$.messager.alert(TranslateDataMTHD(""Error message"", ""错误提示"", """"), TranslateDataMTHD(""failed to dalete data, error message:"", ""删除失败,错误信息:"", """") + data.Message);")d ..WriteLineWithCode(file,"                        		}")d ..WriteLineWithCode(file,"                        		else {")d ..WriteLineWithCode(file,"                            		Qry"_TableInnerName_"();")d ..WriteLineWithCode(file,"                            		$.messager.show({")d ..WriteLineWithCode(file,"                                		title: TranslateDataMTHD(""Info"", ""提示"", """"),")d ..WriteLineWithCode(file,"                               		 	msg: TranslateDataMTHD(""Successfully deleted!"", ""删除成功!"", """"),")d ..WriteLineWithCode(file,"                                		timeout: 500,")d ..WriteLineWithCode(file,"                                		showType: 'slide'")d ..WriteLineWithCode(file,"                            		});")d ..WriteLineWithCode(file,"                        		}")d ..WriteLineWithCode(file,"                    		}")d ..WriteLineWithCode(file,"                		});")d ..WriteLineWithCode(file,"                    }")d ..WriteLineWithCode(file,"                });")d ..WriteLineWithCode(file,"            });")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"            //保存数据")d ..WriteLineWithCode(file,"            $(""#btnSave"_TableInnerName_""").click(function () {")d ..WriteLineWithCode(file,"                var saveData = jQuery.parseJSON($(""#form"_TableInnerName_""").serializeObject());")d ..WriteLineWithCode(file,"                //开启等待")d ..WriteLineWithCode(file,"                $.messager.progress({ text: TranslateDataMTHD(""Saving data"",""正在保存数据"", """"), interval: 500 });")d ..WriteLineWithCode(file,"                setTimeout(function () {")d ..WriteLineWithCode(file,"                    $.messager.progress('close');")d ..WriteLineWithCode(file,"                }, 8000);")d ..WriteLineWithCode(file,"                //往后台提交数据")d ..WriteLineWithCode(file,"                $.ajax({")d ..WriteLineWithCode(file,"                    type: ""post"",")d ..WriteLineWithCode(file,"                    dataType: ""json"",")d ..WriteLineWithCode(file,"                    cache: false, //")d ..WriteLineWithCode(file,"                    async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir")d ..WriteLineWithCode(file,"                    url: me.actionUrl + '?Method=Save"_TableInnerName_"',")d ..WriteLineWithCode(file,"                    data: saveData,")d ..WriteLineWithCode(file,"                    success: function (data, status) {")d ..WriteLineWithCode(file,"                        $.messager.progress('close');")d ..WriteLineWithCode(file,"                        if (!FilterBackData(data)) {")d ..WriteLineWithCode(file,"                            return;")d ..WriteLineWithCode(file,"                        }")d ..WriteLineWithCode(file,"                        if (!data.IsOk) {")d ..WriteLineWithCode(file,"                            $.messager.alert(TranslateDataMTHD(""Error message"", ""错误提示"", """"), TranslateDataMTHD(""failed to dalete data, error message:"", ""删除失败,错误信息:"", """") + data.Message);")d ..WriteLineWithCode(file,"                        }")d ..WriteLineWithCode(file,"                        else {")d ..WriteLineWithCode(file,"                            Qry"_TableInnerName_"();")d ..WriteLineWithCode(file,"                            $.messager.show({")d ..WriteLineWithCode(file,"                                title: TranslateDataMTHD(""Info"", ""提示"", """"),")d ..WriteLineWithCode(file,"                                msg: TranslateDataMTHD(""Successfully saveed!"", ""保存成功!"", """"),")d ..WriteLineWithCode(file,"                                timeout: 500,")d ..WriteLineWithCode(file,"                                showType: 'slide'")d ..WriteLineWithCode(file,"                            });")d ..WriteLineWithCode(file,"                            $('#winEdit"_TableInnerName_"').window(""close"");")d ..WriteLineWithCode(file,"                        }")d ..WriteLineWithCode(file,"                    }")d ..WriteLineWithCode(file,"                });")d ..WriteLineWithCode(file,"            });")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"            //关闭窗口")d ..WriteLineWithCode(file,"            $(""#btnClose"_TableInnerName_""").click(function () {")d ..WriteLineWithCode(file,"				$('#winEdit"_TableInnerName_"').window(""close"");")d ..WriteLineWithCode(file,"            });")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"            //构造查询事件")d ..WriteLineWithCode(file,"            $(""#txtFilter"_TableInnerName_""").searchbox({")d ..WriteLineWithCode(file,"                searcher: function (value, name) {")d ..WriteLineWithCode(file,"                    Qry"_TableInnerName_"();")d ..WriteLineWithCode(file,"                },")d ..WriteLineWithCode(file,"                prompt: TranslateDataMTHD('Enter query', '回车查询', '')")d ..WriteLineWithCode(file,"            });")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"")f i=1:1:$l(RowSpec,",") d.s colName=$p(RowSpec,",",i).s colLen=$p(RowLen,",",i).s remark=$p(RowRemark,$c(2),i).s type=$p(types,",",i).//外键参照信息.s refInfo=..GetForeignKeyInfo(colName,TableName).//有外键.i $l(refInfo) d..d ..WriteLineWithCode(file,"            //"_remark_"下拉表格渲染")..d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').combogrid({")..d ..WriteLineWithCode(file,"                panelWidth: 350,")..d ..WriteLineWithCode(file,"                idField: 'RowID',")..d ..WriteLineWithCode(file,"                width: 205,")..d ..WriteLineWithCode(file,"                textField: '"_$p(refInfo,"^",3)_"',")..d ..WriteLineWithCode(file,"                url: me.actionUrl + '?Method=CommonQueryView&data='+JSON.stringify({ ModelName: """_$tr($p(refInfo,"^",1),"_")_""", Pram: [], IsDisplayCount: false, Joiner: [], Operators: [] }),")..d ..WriteLineWithCode(file,"                columns: [[")..d ..WriteLineWithCode(file,"                    { field: 'RowID', title: '主键', width: 60 },")..d ..WriteLineWithCode(file,"                    { field: '"_$p(refInfo,"^",3)_"', title: '名称', width: 260 }")..d ..WriteLineWithCode(file,"                ]]")..d ..WriteLineWithCode(file,"            });")..d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').combogrid(""showSelectWin"");")..d ..WriteLineWithCode(file,"").//没外键.e  i $l(colName)>4 d..s LastName=$e(colName,$l(colName)-3,$l(colName))..//bool类型..i (type="bool")||(type="bool?") d...d ..WriteLineWithCode(file,"            //"_remark_"布尔渲染")...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').combobox({")...d ..WriteLineWithCode(file,"                valueField:'RowID',")...d ..WriteLineWithCode(file,"                textField:'CName',")...d ..WriteLineWithCode(file,"                width: 205,")...d ..WriteLineWithCode(file,"                data: [{""RowID"":""0"",""CName"":TranslateDataMTHD('No', '否', '')},{""RowID"":""1"",""CName"":TranslateDataMTHD('Yes', '是', '')}]")...d ..WriteLineWithCode(file,"            });")...d ..WriteLineWithCode(file,"")..i LastName="Date" d...d ..WriteLineWithCode(file,"            //"_remark_"日期渲染")...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').datebox({")...d ..WriteLineWithCode(file,"                required:false,")...d ..WriteLineWithCode(file,"                editable: true,")...d ..WriteLineWithCode(file,"                width: 205,")...d ..WriteLineWithCode(file,"                formatter: DateFormatter,")...d ..WriteLineWithCode(file,"                parser: DateParser")...d ..WriteLineWithCode(file,"            });")...d ..WriteLineWithCode(file,"            //设置默认日期")...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').datebox(""setValue"",GetCurentDate())")...d ..WriteLineWithCode(file,"")..i LastName="Time" d...d ..WriteLineWithCode(file,"            //"_remark_"时间渲染")...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').timespinner({")...d ..WriteLineWithCode(file,"                required:false,")...d ..WriteLineWithCode(file,"                editable: true,")...d ..WriteLineWithCode(file,"                width: 205,")...d ..WriteLineWithCode(file,"                showSeconds: true")...d ..WriteLineWithCode(file,"            });")...d ..WriteLineWithCode(file,"            //设置默认日期")...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').timespinner(""setValue"",GetCurentTime())")...d ..WriteLineWithCode(file,"")//构造表格代码d ..WriteLineWithCode(file,"            //"_TableInnerName_"表格")d ..WriteLineWithCode(file,"            $('#dg"_TableInnerName_"').datagrid({")d ..WriteLineWithCode(file,"                remoteSort:false,")d ..WriteLineWithCode(file,"                singleSelect: true,")d ..WriteLineWithCode(file,"                toolbar: ""#dg"_TableInnerName_"ToolBar"",")d ..WriteLineWithCode(file,"                fit: true,")d ..WriteLineWithCode(file,"                onSelect: function (index, row) {")d ..WriteLineWithCode(file,"                    //方便拷贝到子表查询用")d ..WriteLineWithCode(file,"                	var select"_TableInnerName_"=$('#dg"_TableInnerName_"').datagrid(""getSelected"");")d ..WriteLineWithCode(file,"                },")d ..WriteLineWithCode(file,"                onDblClickRow: function (index, row) {")d ..WriteLineWithCode(file,"                    Update"_TableInnerName_"(row);")d ..WriteLineWithCode(file,"                },")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"                columns: [[")d ..WriteLineWithCode(file,"                    { field: 'ChkFlag', title: TranslateDataMTHD('Check', '选择', ''), width: 20, sortable: true, align: 'center', checkbox: true },")f i=1:1:$l(RowSpec,",") d.s colName=$p(RowSpec,",",i).s colLen=$p(RowLen,",",i).s remark=$p(RowRemark,$c(2),i).s endChar=",".//外键参照信息.s refInfo=..GetForeignKeyInfo(colName,TableName).i $l(refInfo) d..s refTableName=$p(refInfo,"^",2)..s refTableNameCol=$p(refInfo,"^",3)..i refTableNameCol'="RowID" d...s colName=colName_"Name".i i=$l(RowSpec,",") s endChar="".d ..WriteLineWithCode(file,"                    { field: '"_colName_"', title: TranslateDataMTHD('"_colName_"', '"_remark_"', '') , width: 150, sortable: true }"_endChar)d ..WriteLineWithCode(file,"                ]]")d ..WriteLineWithCode(file,"            });")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"")//构造查询表格方法代码d ..WriteLineWithCode(file,"            //查询"_TableInnerName)d ..WriteLineWithCode(file,"            function Qry"_TableInnerName_"() {")d ..WriteLineWithCode(file,"                var Filter = $(""#txtFilter"_TableInnerName_""").searchbox(""getValue"");")d ..WriteLineWithCode(file,"                //开启等待,默认注释,在单击事件调用的逻辑启用等待会冲掉双击事件,按需要开启")d ..WriteLineWithCode(file,"                //$.messager.progress({ text: TranslateDataMTHD(""Querying data"",""正在查询数据"", """"), interval: 500 });")d ..WriteLineWithCode(file,"                //setTimeout(function () {")d ..WriteLineWithCode(file,"                    //$.messager.progress('close');")d ..WriteLineWithCode(file,"                //}, 8000);")d ..WriteLineWithCode(file,"                $.ajax({")d ..WriteLineWithCode(file,"                    type: ""post"",")d ..WriteLineWithCode(file,"                    dataType: ""json"",")d ..WriteLineWithCode(file,"                    cache: false, //")d ..WriteLineWithCode(file,"                    async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir")d ..WriteLineWithCode(file,"                    url: me.actionUrl + '?Method=Qry"_TableInnerName_"',")d ..WriteLineWithCode(file,"                    data: { Filter: Filter },")d ..WriteLineWithCode(file,"                    success: function (data, status) {")d ..WriteLineWithCode(file,"                        //结束等待")d ..WriteLineWithCode(file,"                        //$.messager.progress('close');")d ..WriteLineWithCode(file,"                        $('#dg"_TableInnerName_"').datagrid(""loadData"", data);")d ..WriteLineWithCode(file,"                    }")d ..WriteLineWithCode(file,"                });")d ..WriteLineWithCode(file,"            };")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"            //执行查询数据")d ..WriteLineWithCode(file,"            Qry"_TableInnerName_"();")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"")d ..WriteLineWithCode(file,"		});")d ..WriteLineWithCode(file,"    </script>")d ..WriteLineWithCode(file,"</head>")d ..WriteLineWithCode(file,"<body>")d ..WriteLineWithCode(file,"    <div class=""hisui-layout"" fit=""true"" style=""border: none;"">")d ..WriteLineWithCode(file,"        <div data-options=""region:'center',title:''"" style=""border: none;"">")d ..WriteLineWithCode(file,"            <div id=""dg"_TableInnerName_"ToolBar"" style=""padding: 3px 0px 3px 10px;"">")d ..WriteLineWithCode(file,"                <a id=""btnAdd"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" data-options=""iconCls:'icon-add'"" plain=""true"" listranslate=""html~Add"">新增</a>")d ..WriteLineWithCode(file,"                <a id=""btnUpdate"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" data-options=""iconCls:'icon-write-order'"" plain=""true"" listranslate=""html~Mod"">修改</a>")d ..WriteLineWithCode(file,"                <a id=""btnDelete"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" data-options=""iconCls:'icon-cancel'"" plain=""true"" listranslate=""html~Del"">删除</a>")d ..WriteLineWithCode(file,"                <input id=""txtFilter"_TableInnerName_""" style=""margin-left: 14px; width: 240px;""></input>")d ..WriteLineWithCode(file,"            </div>")d ..WriteLineWithCode(file,"            <table id=""dg"_TableInnerName_""" title="""" iconcls=""icon-paper"" listranslate=""title~"_TableInnerName_"""></table>")d ..WriteLineWithCode(file,"        </div>")s allColNum=$l(RowSpec,",")s ColNum=1i allColNum>6 s ColNum=2i allColNum>12 s ColNum=3s winWidth=370*ColNum+30s windowHeight=$l(RowSpec,",")*37/ColNum+90d ..WriteLineWithCode(file,"        <div id=""winEdit"_TableInnerName_""" style=""padding: 10px 0px 0px 10px;width:"_winWidth_"px;height:"_windowHeight_"px;"">")d ..WriteLineWithCode(file,"            <form id=""form"_TableInnerName_""" name=""edit_form"" method=""post"">")d ..WriteLineWithCode(file,"                <input type=""hidden"" id=""txt"_TableInnerName_"RowID"" name=""RowID"" value=""0"" />")d ..WriteLineWithCode(file,"                <table>")s outColNum=0f 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,"                    <tr>").d ..WriteLineWithCode(file,"                        <td class=""lisar"" listranslate=""html~"_colName_""">"_remark_"</td>").//外键参照信息.s refInfo=..GetForeignKeyInfo(colName,TableName).//有外键.i $l(refInfo) d..d ..WriteLineWithCode(file,"                        <td class=""lisal""><input id=""txt"_TableInnerName_colName_""" type=""text"" name="""_colName_""" style=""width:200px;""/></td>").//没外键.e  d..d ..WriteLineWithCode(file,"                        <td class=""lisal""><input id=""txt"_TableInnerName_colName_""" type=""text"" name="""_colName_""" style=""width:200px;"" class=""hisui-validatebox""  maxlength="""_colLen_"""/></td>").i (ColNum=1)||((outColNum#ColNum) =0)||(outColNum=allColNum) d..d ..WriteLineWithCode(file,"                    </tr>")d ..WriteLineWithCode(file,"                </table>")d ..WriteLineWithCode(file,"                <div region=""south"" border=""fale"" style=""text-align: center; padding: 5px 0 0;"">")d ..WriteLineWithCode(file,"                    <a id=""btnSave"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" plain=""false"" listranslate=""html~Save"">保存</a>")d ..WriteLineWithCode(file,"                    <span class=""sp6""></span>")d ..WriteLineWithCode(file,"                    <a id=""btnClose"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" plain=""false"" listranslate=""html~Cancel"">取消</a>")d ..WriteLineWithCode(file,"                </div>")d ..WriteLineWithCode(file,"            </form>")d ..WriteLineWithCode(file,"        </div>")d ..WriteLineWithCode(file,"</body>")d ..WriteLineWithCode(file,"</html>")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=1s 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=colNamed ..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=colTypei 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=0s curIndex=0s index=0While(rset.Next()){s index=index+1s outStr=""s colField=rset.GetColumnName(1)s colName=rset.GetDataByName(colField)s lev=0i colName="CName" s lev=999i colName="IName" s lev=99i colName="XName" s lev=9i 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时强制等待;-asirurl: 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时强制等待;-asirurl: 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 }]]});//查询BTWardfunction 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时强制等待;-asirurl: 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">PhoneNo</td><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" ] ; thenPATH=$PATH:$1elsePATH=$1:$PATHfiesac
}if [ -x /usr/bin/id ]; thenif [ -z "$EUID" ]; then# ksh workaroundEUID=`/usr/bin/id -u`UID=`/usr/bin/id -ru`fiUSER="`/usr/bin/id -un`"LOGNAME=$USERMAIL="/var/spool/mail/$USER"
fi# Path manipulation
if [ "$EUID" = "0" ]; thenpathmunge /usr/sbinpathmunge /usr/local/sbin
elsepathmunge /usr/local/sbin afterpathmunge /usr/sbin after
fiHOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; thenexport HISTCONTROL=ignoreboth
elseexport HISTCONTROL=ignoredups
fiexport 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`" ]; thenumask 002
elseumask 022
fifor i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; doif [ -r "$i" ]; thenif [ "${-#*i}" != "$-" ]; then . "$i"else. "$i" >/dev/nullfifi
doneunset i
unset -f pathmungeexport 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.

在这里插入图片描述

测试
在这里插入图片描述

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/187825.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宠物社区系统宠物领养小程序,宠物救助小程序系统多少钱?

当前很多的宠物被抛弃和虐杀&#xff0c;它们没有选择权&#xff0c;我们强制性的把狗带进人类的生活中&#xff0c;然后又无情的抛弃&#xff0c;让它们无家可归&#xff0c;变成流浪狗&#xff0c;它们做错了什么&#xff1f;流浪动物被主人遗弃之后居无定所&#xff0c;时刻…

Pytorch R-CNN目标检测-汽车car

概述 目标检测(Object Detection)就是一种基于目标几何和统计特征的图像分割,它将目标的分割和识别合二为一,通俗点说就是给定一张图片要精确的定位到物体所在位置,并完成对物体类别的识别。其准确性和实时性是整个系统的一项重要能力。 R-CNN的全称是Region-CNN(区域卷积神经…

Linux是什么,Linux系统介绍

很多小伙伴都不是那么了解和知道Linux&#xff0c;到底Linux是什么&#xff1f; 像大家用到的安卓手机&#xff0c;生活中用到的各种智能设备&#xff0c;比如路由器&#xff0c;光猫&#xff0c;智能家具等&#xff0c;很多都是在Linux操作系统上。 Linux是什么&#xff1f;Li…

基于轻量级卷积神经网络CNN开发构建打架斗殴识别分析系统

在很多公共场合中&#xff0c;因为一些不可控因素导致最终爆发打架斗殴或者大规则冲突事件的案例层出不穷&#xff0c;基于视频监控等技术手段智能自动化地识别出已有或者潜在的危险行为对于维护公共场合的安全稳定有着重要的意义。本文的核心目的就是想要基于CNN模型来尝试开发…

AI:74-基于深度学习的宠物品种识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

视频编软件会声会影2024中文版功能介绍

会声会影2024中文版是一款加拿大公司Corel发布的视频编软件。会声会影2024官方版支持视频合并、剪辑、屏幕录制、光盘制作、添加特效、字幕和配音等功能&#xff0c;用户可以快速上手。会声会影2024软件还包含了视频教学以及模板素材&#xff0c;让用户剪辑视频更加的轻松。 会…

LeetCode(2)移除元素【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 27. 移除元素 1.题目 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原…

赛宁网安入选国家工业信息安全漏洞库(CICSVD)2023年度技术组成员单

近日&#xff0c;由国家工业信息安全发展研究中心、工业信息安全产业发展联盟主办的“2023工业信息安全大会”在北京成功举行。 会上&#xff0c;国家工业信息安全发展研究中心对为国家工业信息安全漏洞库&#xff08;CICSVD&#xff09;提供技术支持的单位授牌表彰。北京赛宁…

安装dubbo-admin报错node版本和test错误

✅作者简介&#xff1a;CSDN内容合伙人、信息安全专业在校大学生&#x1f3c6; &#x1f525;系列专栏 &#xff1a;dubbo-admin安装 &#x1f4c3;新人博主 &#xff1a;欢迎点赞收藏关注&#xff0c;会回访&#xff01; &#x1f4ac;舞台再大&#xff0c;你不上台&#xff0…

一文入门Springboot+actuator+Prometheus+Grafana

环境介绍 技术栈 springbootmybatis-plusmysqloracleactuatorPrometheusGrafana 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 本地主机应用 192.168.1.9:8007 PrometheusGrafana安装在同一台主机 http://…

【Spring之底层核心架构概念解析】

文章目录 一、BeanDefinition二、BeanDefinitionReader2.1、AnnotatedBeanDefinitionReader2.2、XmlBeanDefinitionReader 五、ClassPathBeanDefinitionScanner六、BeanFactory七、ApplicationContext7.1、AnnotationConfigApplicationContext7.2、ClassPathXmlApplicationCont…

Zeitgeist ZTG Token以及其预测市场加入Moonbeam生态

波卡上的首选多链开发平台Moonbeam宣布与Zeitgeist达成XCM集成&#xff0c;将ZTG Token引入Moonbeam。此集成将使波卡内的Moonbeam和Zeitgeist网络之间的流动性得以流动&#xff0c;并通过Moonbeam的互连合约实现远程链集成。 Zeitgeist是一个基于波卡的Substrate区块链框架构…

数据结构:AVL树的旋转(高度平衡树)

1、AVL树简介 AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1&#xff0c;所以它也被称为高度平衡树。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis&#xff0c;他们…

Vuex:模块化Module :VCA模式

VCA中不支持辅助函数&#xff0c;因为辅助函数中是用this.$store&#xff0c;而VCA中没有绑定this的 由于使用单一状态树&#xff0c;应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时&#xff0c;store 对象就有可能变得相当臃肿。 这句话的意思是&#xff0c;…

初识Linux:目录路径

目录 提示&#xff1a;以下指令均在Xshell 7 中进行 一、基本指令&#xff1a; 二、文件 文件内容文件属性 三、ls 指令拓展 1、 ls -l &#xff1a; 2、ls -la&#xff1a; 3、ls [目录名] &#xff1a; 4、ls -ld [目录名]&#xff1a; 四、Linux中的文件和…

SpringBoot 使用EasyExcel 导出Excel报表(单元格合并)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、导入依赖二、代码1. 导出简单的Excel2. 代码控制导出报表的格式 总结 前言 SpringBoot 使用Alibaba提供的EasyExcel导出Excel报表。 本文中涉及的业务逻辑…

asp.net校园招聘管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 校园招聘管理系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言开发 应用技术&#xff1a;asp.net c#s…

IP行业API助力于网络分析和数据挖掘

引言 在当今数字化时代&#xff0c;数据成为了企业、科研机构和政府决策者的重要资源&#xff0c;而IP行业API则成为了数据分析及挖掘的工具之一。IP行业API是一种能够查询IP地址所属的行业分类信息的应用程序接口&#xff0c;它能够提供在网络分析、用户行为分析及大数据挖掘…

LeetCode 面试题 16.20. T9键盘

文章目录 一、题目二、C# 题解 一、题目 在老式手机上&#xff0c;用户通过数字键盘输入&#xff0c;手机将提供与这些数字相匹配的单词列表。每个数字映射到0至4个字母。给定一个数字序列&#xff0c;实现一个算法来返回匹配单词的列表。你会得到一张含有有效单词的列表。映射…

农业大棚智能化改造升级与远程视频监管方案,助力智慧农业建设发展

一、需求分析 随着现代化技术的发展&#xff0c;农业大棚的智慧化也成为当前备受关注的智慧农业发展手段。利用先进的信息化手段来对农业大棚进行管理&#xff0c;采集和掌握作物的生长状况、作业监督、生态环境等信息数据&#xff0c;实现精准操作、精细管理&#xff0c;远程…