Merge branch 'codes'

This commit is contained in:
Jared Ye 2026-03-05 19:37:37 +08:00
commit cd7775011c
2148 changed files with 36571 additions and 568135 deletions

43
.gitignore vendored
View File

@ -1,6 +1,43 @@
*.properties
*.properties
*.properties
client/build/built-jar.properties
client/nbproject/build-impl.xml
client/nbproject/genfiles.properties
client/nbproject/private/private.properties
client/nbproject/project.properties
client/problem.html
client/test/output/Main.cpp
clientUpdater/dist/clientUpdater.jar
clientUpdater/dist/lib/Common.jar
clientUpdater/dist/README.TXT
Common/dist/Common.jar
Judger/dist/Judger.jar
Judger/dist/lib/Common.jar
*.class
*.properties
*.html
*.cpp
*.jar
*.class
*.zip
*.jar
client/nbproject/private/private.properties
*.class
*.log
*.exe
*.class
*.jar
*.class
*.class
*.7z
/client/dist/
*.class
/client/build/classes
*.class
/client/build
/client/可运行客户端环境
/Judger/备份
/JuderUI/log
/JuderUI/build
/JuderUI/log
/client/build
/client/可运行客户端环境

8
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

1
.idea/.name Normal file
View File

@ -0,0 +1 @@
Judger.jar

View File

@ -10,9 +10,12 @@
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ProjectColorInfo"><![CDATA[{
"associatedIndex": 6
}]]></component>
<component name="ComposerSettings">
<execution />
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 6
}</component>
<component name="ProjectId" id="2aiWf7bW87V3mbwTY6CfqHLJiX4" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
@ -23,11 +26,13 @@
"RunOnceActivity.OpenProjectViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"WebServerToolWindowFactoryState": "false",
"last_opened_file_path": "D:/OJ",
"kotlin-language-version-configured": "true",
"last_opened_file_path": "D:/dhu/3B/软件架构设计/实验/实验 4 设计模式/必考/Adapter",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
"settings.editor.selected.configurable": "vcs.Subversion",
"spring.configuration.checksum": "d41d8cd98f00b204e9800998ecf8427e",
"vue.rearranger.settings.migration": "true"
@ -53,6 +58,14 @@
</list>
</recent_temporary>
</component>
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-jdk-9823dce3aa75-28b599e66164-intellij.indexing.shared.core-IU-242.23339.11" />
<option value="bundled-js-predefined-d6986cc7102b-5c90d61e3bab-JavaScript-IU-242.23339.11" />
</set>
</attachedChunks>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
<component name="SvnConfiguration" cleanupOnStartRun="true">
<configuration>C:\Users\32592\AppData\Roaming\Subversion</configuration>
@ -66,6 +79,9 @@
<option name="presentableId" value="Default" />
<updated>1704801979303</updated>
<workItem from="1704801980316" duration="598000" />
<workItem from="1719379629921" duration="24000" />
<workItem from="1742820783863" duration="109000" />
<workItem from="1743039478282" duration="37000" />
</task>
<servers />
</component>

17
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,17 @@
{
// 使 IntelliSense
//
// 访: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "启动程序",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\client\\src\\web\\test.js"
}
]
}

Binary file not shown.

BIN
Common/dist/Common.jar vendored

Binary file not shown.

View File

@ -0,0 +1,10 @@
2024-04-30 21:19:22[INFO]Log message 0
2024-04-30 21:19:22[INFO]Log message 1
2024-04-30 21:19:22[INFO]Log message 2
2024-04-30 21:19:22[INFO]Log message 3
2024-04-30 21:19:22[INFO]Log message 4
2024-04-30 21:19:22[INFO]Log message 5
2024-04-30 21:19:22[INFO]Log message 6
2024-04-30 21:19:22[INFO]Log message 7
2024-04-30 21:19:22[INFO]Log message 8
2024-04-30 21:19:22[INFO]Log message 9

32
Common/log_2024043021.txt Normal file
View File

@ -0,0 +1,32 @@
2024-04-30 21:09:04[INFO]Log message 0
2024-04-30 21:09:09[INFO]Log message 1
2024-04-30 21:09:14[INFO]Log message 2
2024-04-30 21:09:19[INFO]Log message 3
2024-04-30 21:09:24[INFO]Log message 4
2024-04-30 21:09:29[INFO]Log message 5
2024-04-30 21:09:34[INFO]Log message 6
2024-04-30 21:09:39[INFO]Log message 7
2024-04-30 21:09:44[INFO]Log message 8
2024-04-30 21:09:49[INFO]Log message 9
2024-04-30 21:11:19[INFO]Log message 0
2024-04-30 21:11:26[INFO]Log message 1
2024-04-30 21:11:38[INFO]Log message 0
2024-04-30 21:11:38[INFO]Log message 1
2024-04-30 21:11:38[INFO]Log message 2
2024-04-30 21:11:38[INFO]Log message 3
2024-04-30 21:11:38[INFO]Log message 4
2024-04-30 21:11:38[INFO]Log message 5
2024-04-30 21:11:38[INFO]Log message 6
2024-04-30 21:11:38[INFO]Log message 7
2024-04-30 21:11:38[INFO]Log message 8
2024-04-30 21:11:38[INFO]Log message 9
2024-04-30 21:13:00[INFO]Log message 0
2024-04-30 21:13:00[INFO]Log message 1
2024-04-30 21:13:00[INFO]Log message 2
2024-04-30 21:13:00[INFO]Log message 3
2024-04-30 21:13:00[INFO]Log message 4
2024-04-30 21:13:00[INFO]Log message 5
2024-04-30 21:13:00[INFO]Log message 6
2024-04-30 21:13:00[INFO]Log message 7
2024-04-30 21:13:00[INFO]Log message 8
2024-04-30 21:13:00[INFO]Log message 9

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
build.xml.data.CRC32=e5eafc6d
build.xml.script.CRC32=35a5ea50
build.xml.stylesheet.CRC32=8064a381@1.79.1.48
build.xml.stylesheet.CRC32=f85dc8f2@1.113.0.48
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=e5eafc6d
nbproject/build-impl.xml.script.CRC32=f31ce408
nbproject/build-impl.xml.stylesheet.CRC32=830a3534@1.80.1.48
nbproject/build-impl.xml.script.CRC32=6e6b0703
nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.113.0.48

View File

@ -3,12 +3,6 @@
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group name="最新版本代码"/>
<group>
<file>file:/K:/OJ/Common/test/common/LangSelectorTest.java</file>
<file>file:/K:/OJ/Common/src/common/Const.java</file>
<file>file:/K:/OJ/Common/src/common/Config.java</file>
<file>file:/K:/OJ/Common/src/common/FileFinder.java</file>
<file>file:/K:/OJ/Common/src/common/LangSelector.java</file>
</group>
<group/>
</open-files>
</project-private>

View File

@ -19,8 +19,12 @@ build.test.results.dir=${build.dir}/test/results
#debug.transport=dt_socket
debug.classpath=\
${run.classpath}
debug.modulepath=\
${run.modulepath}
debug.test.classpath=\
${run.test.classpath}
debug.test.modulepath=\
${run.test.modulepath}
# build.classes.dir \u4e2d\u5e94\u4ece\u5206\u53d1 jar \u4e2d\u6392\u9664\u7684\u6587\u4ef6
dist.archive.excludes=
# This directory is removed when the project is cleaned:
@ -58,6 +62,8 @@ javac.classpath=\
javac.compilerargs=
javac.deprecation=false
javac.external.vm=false
javac.modulepath=
javac.processormodulepath=
javac.processorpath=\
${javac.classpath}
javac.source=1.8
@ -65,6 +71,8 @@ javac.target=1.8
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}
javac.test.modulepath=\
${javac.modulepath}
javac.test.processorpath=\
${javac.test.classpath}
javadoc.additionalparam=
@ -78,7 +86,7 @@ javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
main.class=common.DBConfig
main.class=common.LangSelector
meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=true
platform.active=default_platform
@ -89,9 +97,13 @@ run.classpath=\
# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
# To set system properties for unit tests define test-sys-prop.name=value:
run.jvmargs=
run.modulepath=\
${javac.modulepath}
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
run.test.modulepath=\
${javac.test.modulepath}
source.encoding=UTF-8
src.dir=src
test.src.dir=test

View File

@ -13,7 +13,7 @@ import java.util.List;
import java.util.Map.Entry;
import java.util.Properties;
import log.Log;
import java.nio.file.Paths;
public class Config {
public static int DEBUG;
@ -100,7 +100,12 @@ public class Config {
//临时代码输出路径 若要改回配置文件读取 从const里获取字段
public static String getSourcePath() {
return "./test"; //
String curDir = Paths.get(".").toAbsolutePath().normalize().toString();
return curDir+"/test";
}
public static String getLogPath(){
String curDir = Paths.get(".").toAbsolutePath().normalize().toString();
return curDir+"/log";
}
//临时代码输出路径
@ -108,30 +113,62 @@ public class Config {
// if (isTestRelative) {
// return System.getProperty("user.dir") + prop.getProperty("relativeExeDir");
// } else {
return "./test";
String curDir = Paths.get(".").toAbsolutePath().normalize().toString();
return curDir+"/test";
//}
}
public static String getCompilerDir(String language) {
public static String getCompilerDir(String language,String compiler) {
String dir = null;
if (language.equals("c") || language.equals("cpp") || language.equals("c++")) {
dir = prop.getProperty(Const.MinGWDir);
} else if (language.equals("java")) {
dir = prop.getProperty(Const.JavaCompilerDir);
}
//todo
dir=LangSelector.getCompilerPath(language,compiler);
//if (language.equals("c") || language.equals("cpp") || language.equals("c++")) {
// dir=LangSelector.getCompilerPath("C++", compiler);
//dir = prop.getProperty(Const.MinGWDir);
//} else if (language.equals("java")) {
// dir=LangSelector.getCompilerPath("Java", compiler);
//dir = prop.getProperty(Const.JavaCompilerDir);
//}
return dir;
}
public static String CompilerDir(String language) {
//public static String getCompilerDir(String language) {
// String dir = null;
//todo
// if (language.equals("c") || language.equals("cpp") || language.equals("c++")) {
// dir=LangSelector.getCompilerPath("C++", null);
// //dir = prop.getProperty(Const.MinGWDir);
// } else if (language.equals("java")) {
// dir=LangSelector.getCompilerPath("Java", null);
// //dir = prop.getProperty(Const.JavaCompilerDir);
// }
// return dir;
// }
public static String CompilerDir(String language,String compiler) {
String dir = null;
if (language.equals("c") || language.equals("cpp") || language.equals("c++")) //返回各种语言的编译器地址
{
dir = System.getProperty("user.dir") + Const.MinGWDir;
//dir = System.getProperty("user.dir") + Const.MinGWDir;
dir=LangSelector.getCompilerPath("C++",compiler);
} else if (language.equals("java")) {
dir = System.getProperty("user.dir") + Const.JavaCompilerDir;
//dir = System.getProperty("user.dir") + Const.JavaCompilerDir;
dir=LangSelector.getCompilerPath("Java",compiler);
}
return dir;
}
// public static String CompilerDir(String language) {
// String dir = null;
//
// if (language.equals("c") || language.equals("cpp") || language.equals("c++")) //返回各种语言的编译器地址
// {
// //dir = System.getProperty("user.dir") + Const.MinGWDir;
// dir = LangSelector.getCompilerPath("C++", compiler);
// } else if (language.equals("java")) {
// //dir = System.getProperty("user.dir") + Const.JavaCompilerDir;
// dir = LangSelector.getCompilerPath("Java", null);
// }
// return dir;
// }
}

View File

@ -37,6 +37,8 @@ public class Const {
return ".cpp";
} else if (language.equals("java")) {
return ".java";
}else if(language.equals("python")){
return ".py";
}
return null;
}

View File

@ -70,12 +70,12 @@ private final static String FileName="DBConfig.properties";
public static void setPassword(String Password) {
dbConfig.setProperty("hibernate.connection.password", Password);
}
public static void main(String[] args) {
System.out.println(DBConfig.getUserName());
System.out.println(DBConfig.getPassword());
System.out.println(DBConfig.getIp());
}
//
// public static void main(String[] args) {
// System.out.println(DBConfig.getUserName());
// System.out.println(DBConfig.getPassword());
// System.out.println(DBConfig.getIp());
// }
public static void writeToFile(){
try {

View File

@ -0,0 +1,34 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package common;
/**
*
* @author tange
*/
public class EscapeXml {
// 手动转义特殊字符为 XML 实体
public static String escapeXml(String input) {
if(input.length()>1000)
input=input.substring(0,1000);
StringBuilder builder = new StringBuilder();
for (char c : input.toCharArray()) {
switch (c) {
case '<':
builder.append("&lt;");
break;
case '>':
builder.append("&gt;");
break;
default:
builder.append(c);
break;
}
}
return builder.toString();
}
}

View File

@ -1,35 +1,143 @@
package common;
import java.io.File;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
*
* @author Jared Ye
*/
public abstract class LangSelector {
private static String ConfigPath="";
private static Document Data;
public static boolean Loaded=false;
private static String lastLanguage; // 最后使用的语言
private static XPath xpath = XPathFactory.newInstance().newXPath();
static {
try {
ConfigPath=findConfigFilePath();
Data = init(ConfigPath);
customDefaultCompiler=new HashMap<>();
init();
Loaded=true;
} catch (Exception e) {
//初始化的时候没有读到config.xml
}
}
//
private static Map<String,String>customDefaultCompiler;
// by san_san
public static String getDefaultCompiler(String language) {
try {
String xpathExpr = String.format("/languages/language[@id='%s']/lastCompiler", language);
Node lastCompilerNode = (Node) xpath.evaluate(xpathExpr, Data, XPathConstants.NODE);
if (lastCompilerNode != null) {
return lastCompilerNode.getTextContent();
}
} catch (XPathExpressionException e) {
e.printStackTrace();
}
return customDefaultCompiler.get(language);
}
public static void setDefaultCompiler(String language,String compiler) {
customDefaultCompiler.put(language, compiler);
try {
// 更新 XML 中的 lastCompiler 节点
String xpathExpr = String.format("/languages/language[@id='%s']", language);
Node languageNode = (Node) xpath.evaluate(xpathExpr, Data, XPathConstants.NODE);
if (languageNode != null) {
Element languageElement = (Element) languageNode;
Node lastCompilerNode = (Node) xpath.evaluate("lastCompiler", languageElement, XPathConstants.NODE);
if (lastCompilerNode == null) {
// 如果 lastCompiler 节点不存在创建它
lastCompilerNode = Data.createElement("lastCompiler");
languageElement.appendChild(lastCompilerNode);
}
lastCompilerNode.setTextContent(compiler);
}
} catch (XPathExpressionException e) {
e.printStackTrace();
}
}
//
// by san_san
// 获取最后使用的语言
public static String getLastLanguage() {
try {
String xpathExpr = "/languages/lastLanguage";
Node lastLanguageNode = (Node) xpath.evaluate(xpathExpr, Data, XPathConstants.NODE);
if (lastLanguageNode != null) {
return lastLanguageNode.getTextContent();
}
} catch (XPathExpressionException e) {
e.printStackTrace();
}
return null;
}
// 设置最后使用的语言
public static void setLastLanguage(String language) {
try {
// 标准化语言名称
String standardLanguage = parseStandardLanguageName(language);
// 查找现有的 lastLanguage 节点
String xpathExpr = "/languages/lastLanguage";
Node lastLanguageNode = (Node) xpath.evaluate(xpathExpr, Data, XPathConstants.NODE);
if (lastLanguageNode != null) {
// 如果节点存在更新内容
lastLanguageNode.setTextContent(standardLanguage);
} else {
// 如果节点不存在创建新节点
Element root = Data.getDocumentElement();
Element newLastLanguage = Data.createElement("lastLanguage");
newLastLanguage.setTextContent(standardLanguage);
root.appendChild(newLastLanguage);
}
// 更新内存中的值
lastLanguage = standardLanguage;
// 保存到文件
save(ConfigPath);
} catch (Exception e) {
e.printStackTrace();
}
}
private static String findConfigFilePath() {
String currentPath = System.getProperty("user.dir");
String configFile = "config.xml";
@ -63,8 +171,163 @@ public abstract class LangSelector {
public static String getConfigPath(){
return ConfigPath;
}
/////////////////////////////////新增的逻辑
public static void save(String filePath) throws Exception {
Document doc = Data;
// 创建TransformerFactory实例
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
// 将Document转换为DOMSource
DOMSource source = new DOMSource(doc);
// 创建StreamResult以保存到文件
StreamResult result = new StreamResult(new File(filePath));
// 执行转换并写入文件
transformer.transform(source, result);
System.out.println("XML 文件保存成功: " + filePath);
}
public static boolean setCompilerPath(String languageName, String compilerName, String newPath) {
languageName = parseStandardLanguageName(languageName);
if (compilerName == null || compilerName.trim().equals("")) {
compilerName = getDefaultCompilerName(languageName);
}
try {
// 定义XPath表达式来找到对应的编译器path节点
String exp = "/languages/language" + "[@id='" + languageName + "']" + "//compiler[@name='" + compilerName + "']//path";
// 使用XPath查找对应节点
Node pathNode = (Node) xpath.evaluate(exp, Data, XPathConstants.NODE);
// 检查path节点是否存在
if (pathNode != null) {
// 设置新路径
pathNode.setTextContent(newPath);
return true; // 返回true表示设置成功
} else {
System.out.println("找不到指定的编译器路径节点");
return false;
}
} catch (XPathExpressionException e) {
System.out.println(e.getMessage());
return false;
}
}
public static void setCompileCommand(String languageName, String compilerName, String compileCommand) {
Document doc=Data;
languageName = parseStandardLanguageName(languageName);
if (compilerName == null || compilerName.trim().equals("")) {
compilerName = getDefaultCompilerName(languageName);
}
try {
String exp = "/languages/language[@id='" + languageName + "']//compiler[@name='" + compilerName + "']//compileCmd";
// 获取节点
Node compileCmdNode = (Node) xpath.evaluate(exp, Data, XPathConstants.NODE);
if (compileCmdNode != null) {
compileCmdNode.setTextContent(compileCommand);
} else {
// 创建新节点逻辑
// 这里的实现取决于你的 XML 结构假设我们有 Document 对象 doc
Element newCompilerElement = doc.createElement("compiler");
newCompilerElement.setAttribute("name", compilerName);
Element newCompileCmdElement = doc.createElement("compileCmd");
newCompileCmdElement.setTextContent(compileCommand);
newCompilerElement.appendChild(newCompileCmdElement);
// 假设你有一个表示语言的节点
Node languageNode = (Node) xpath.evaluate("/languages/language[@id='" + languageName + "']", Data, XPathConstants.NODE);
if (languageNode != null) {
languageNode.appendChild(newCompilerElement);
}
}
} catch (XPathExpressionException e) {
System.out.println(e.getMessage());
}
}
//////////////////////
public static void setLinkCommand(String languageName, String compilerName, String linkCommand) {
Document doc = Data;
languageName = parseStandardLanguageName(languageName);
if (compilerName == null || compilerName.trim().equals("")) {
compilerName = getDefaultCompilerName(languageName);
}
try {
String exp = "/languages/language[@id='" + languageName + "']//compiler[@name='" + compilerName + "']//linkCmd";
// 获取节点
Node compileCmdNode = (Node) xpath.evaluate(exp, Data, XPathConstants.NODE);
if (compileCmdNode != null) {
compileCmdNode.setTextContent(linkCommand);
} else {
// 创建新节点逻辑
// 这里的实现取决于你的 XML 结构假设我们有 Document 对象 doc
Element newCompilerElement = doc.createElement("compiler");
newCompilerElement.setAttribute("name", compilerName);
Element newCompileCmdElement = doc.createElement("linkCmd");
newCompileCmdElement.setTextContent(linkCommand);
newCompilerElement.appendChild(newCompileCmdElement);
// 假设你有一个表示语言的节点
Node languageNode = (Node) xpath.evaluate("/languages/language[@id='" + languageName + "']", Data, XPathConstants.NODE);
if (languageNode != null) {
languageNode.appendChild(newCompilerElement);
}
}
} catch (XPathExpressionException e) {
System.out.println(e.getMessage());
}
}
public static String parseStandardLanguageName(String languageName) {
try {
// 创建 XPath 对象
XPath xpath = XPathFactory.newInstance().newXPath();
// 编译 XPath 表达式
XPathExpression expr = xpath.compile("//language");
// 评估 XPath 表达式
Object result = expr.evaluate(Data, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
// 遍历每个语言节点
for (int i = 0; i < nodes.getLength(); i++) {
String id = nodes.item(i).getAttributes().getNamedItem("id").getNodeValue();
String aliasString = nodes.item(i).getAttributes().getNamedItem("alias").getNodeValue();
String[] aliases = aliasString.split(",");
// 检查 languageName 是否与 ID 匹配
if (id.equalsIgnoreCase(languageName)) {
return id;
}
// 检查 languageName 是否与别名匹配
for (String alias : aliases) {
if (alias.equalsIgnoreCase(languageName)) {
return id;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
// 如果没有匹配项则返回原始 languageName
return languageName;
}
public static String getDefaultCompilerName(String languageName){
languageName=parseStandardLanguageName(languageName);
if(customDefaultCompiler.containsKey(languageName))
{
return customDefaultCompiler.get(languageName);
}
//if(languageName.charAt(0)>='a')languageName
try{
String exp="/languages/language"+ "[@id='" +languageName+ "']"+"/compiler[1]/@name";
@ -78,30 +341,98 @@ public abstract class LangSelector {
public static Document init(String ConfigPath) throws Exception {
public static Document init() throws Exception {
// 创建Document对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
DocumentBuilder db = dbf.newDocumentBuilder();
// 创建XPath对象
LangSelector.ConfigPath =ConfigPath;
LangSelector.ConfigPath =findConfigFilePath();
//JOptionPane.showMessageDialog(null,"当前工作目录:"+ConfigPath);
// LangSelector.ConfigPath=new File(LangSelector.ConfigPath).getAbsolutePath();
return db.parse(LangSelector.ConfigPath);
Document doc=db.parse(new File(LangSelector.ConfigPath));
Data=doc;
// 加载默认编译器设置 by san_san
NodeList languageNodes = (NodeList) xpath.evaluate("/languages/language", doc, XPathConstants.NODESET);
for (int i = 0; i < languageNodes.getLength(); i++) {
Element languageElement = (Element) languageNodes.item(i);
String languageId = languageElement.getAttribute("id");
Node lastCompilerNode = (Node) xpath.evaluate("lastCompiler", languageElement, XPathConstants.NODE);
if (lastCompilerNode != null) {
customDefaultCompiler.put(languageId, lastCompilerNode.getTextContent());
} else {
// 如果 lastCompiler 不存在使用第一个编译器作为默认
NodeList compilerNodes = languageElement.getElementsByTagName("compiler");
if (compilerNodes.getLength() > 0) {
Element defaultCompiler = (Element) compilerNodes.item(0);
customDefaultCompiler.put(languageId, defaultCompiler.getAttribute("name"));
}
}
}
// 初始化 lastLanguage
Node lastLanguageNode = (Node) xpath.evaluate("/languages/lastLanguage", doc, XPathConstants.NODE);
if (lastLanguageNode != null) {
lastLanguage = lastLanguageNode.getTextContent();
} else {
// 如果不存在创建节点并设置默认值为第一个可用的语言
languageNodes = (NodeList) xpath.evaluate("/languages/language", doc, XPathConstants.NODESET);
if (languageNodes.getLength() > 0) {
Element firstLanguage = (Element) languageNodes.item(0);
lastLanguage = firstLanguage.getAttribute("id");
Element root = doc.getDocumentElement();
Element lastLanguageElement = doc.createElement("lastLanguage");
lastLanguageElement.setTextContent(lastLanguage);
root.appendChild(lastLanguageElement);
}
}
return doc;
}
// 获取语言ID的辅助方法
public static String getLanguageIdFromAlias(String alias) {
return parseStandardLanguageName(alias);
}
public static List<String> getCompilerNames(String languageName){
languageName=parseStandardLanguageName(languageName);
ArrayList<String>arrayListStr=new ArrayList<>();
try {
String exp="/languages/language"+ "[@id='" +languageName+ "']"+"//compiler";
NodeList nodeList = (NodeList) xpath.evaluate(exp,Data,XPathConstants.NODESET);
for (int i = 0; i < nodeList.getLength(); i++) {
Node childNode = nodeList.item(i);
arrayListStr.add(childNode.getAttributes().getNamedItem("name").getTextContent());
// 如果需要获取属性值可以使用 childNode.getAttributes().getNamedItem("attributeName").getTextContent()
}
return arrayListStr;
} catch (XPathExpressionException ex) {
Logger.getLogger(LangSelector.class.getName()).log(Level.SEVERE, null, ex);
return arrayListStr;
}
}
public static String getCompilerPath(String languageName,String compilerName) {
if(compilerName==null)compilerName=getDefaultCompilerName(languageName);
languageName=parseStandardLanguageName(languageName);
if(compilerName==null||compilerName.equals(""))compilerName=getDefaultCompilerName(languageName);
try{
String exp="/languages/language"+ "[@id='" +languageName+ "']"+"//compiler[@name='"+compilerName+"']//path/text()";
return (String) xpath.evaluate(exp,Data);
} catch (XPathExpressionException e) {
System.out.println("null!");
System.out.println(e.getMessage());
return null;
}
}
public static String getCompileCommand(String languageName,String compilerName){
languageName=parseStandardLanguageName(languageName);
if(compilerName==null)compilerName=getDefaultCompilerName(languageName);
try{
String exp="/languages/language"+ "[@id='" +languageName+ "']"+"//compiler[@name='"+compilerName+"']//compileCmd/text()";
@ -112,7 +443,8 @@ public abstract class LangSelector {
}
}
public static String getLinkCommand(String languageName,String compilerName){
if(compilerName==null)compilerName=getDefaultCompilerName(languageName);
languageName=parseStandardLanguageName(languageName);
if(compilerName==null||compilerName.equals(""))compilerName=getDefaultCompilerName(languageName);
try{
String exp="/languages/language"+ "[@id='" +languageName+ "']"+"//compiler[@name='"+compilerName+"']//linkCmd/text()";
return (String) xpath.evaluate(exp,Data);
@ -122,7 +454,8 @@ public abstract class LangSelector {
}
}
public static String getRunCommand(String languageName,String compilerName){
if(compilerName==null)compilerName=getDefaultCompilerName(languageName);
languageName=parseStandardLanguageName(languageName);
if(compilerName==null||compilerName.equals(""))compilerName=getDefaultCompilerName(languageName);
try{
String exp="/languages/language"+ "[@id='" +languageName+ "']"+"//compiler[@name='"+compilerName+"']//runCmd/text()";
return (String) xpath.evaluate(exp,Data);
@ -146,12 +479,12 @@ public abstract class LangSelector {
}
}
public static String matchPlaceHolder(String src, HashMap<String,String>map){
if(src==null||src.trim().isEmpty())return null;
for (java.util.Map.Entry<String, String> Entry : map.entrySet()) {
src = src.replace(Entry.getKey(), Entry.getValue());
System.out.println(Entry.getKey() + "已替换:" + Entry.getValue());
//System.out.println(Entry.getKey() + "已替换:" + Entry.getValue());
}
return src;
}
}

View File

@ -0,0 +1,20 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package common;
public enum LogLevel{
INFO("INFO"),
WARNING("WARNING"),
ERROR("ERROR");
private final String info;
private LogLevel(String info){
this.info=info;
}
public String getString(){
return info;
}
}

View File

@ -0,0 +1,89 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package common;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Logger {
private static Logger instance;
private PrintWriter writer;
private String logFileName;
private static final String LOG_FILE_PREFIX = "log";
private static final String LOG_FILE_SUFFIX = ".txt";
private static final long HOUR_IN_MILLISECONDS = 3600000L; // 1 hour in milliseconds
private static String Logdir = Config.getLogPath();
private Logger() {
createLogFile();
startFileUpdateThread();
}
public static synchronized Logger getInstance() {
if (instance == null) {
instance = new Logger();
}
return instance;
}
private void createLogFile() {
LocalDateTime now = LocalDateTime.now();
logFileName = Logdir+File.separator+LOG_FILE_PREFIX + "_" + now.format(DateTimeFormatter.ofPattern("yyyyMMddHH")) + LOG_FILE_SUFFIX;
System.out.println("日志文件"+logFileName+"已创建!");
try {
writer = new PrintWriter(new FileWriter(logFileName, true));
} catch (IOException e) {
e.printStackTrace();
}
}
private void startFileUpdateThread() {
Thread fileUpdateThread = new Thread(() -> {
while (true) {
try {
Thread.sleep(HOUR_IN_MILLISECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
updateLogFile();
}
});
fileUpdateThread.setDaemon(true);
fileUpdateThread.start();
}
private void updateLogFile() {
writer.close(); // Close the current log file
createLogFile(); // Create a new log file
}
public void log(String msg, LogLevel level) {
String txt = getTimeStamp() + "[" + level.getString() + "]" + msg;
System.out.println(txt);
writer.println(txt);
writer.flush();
}
private String getTimeStamp() {
LocalDateTime now = LocalDateTime.now();
return now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
public static void main(String[] args) {
Logger logger = Logger.getInstance();
for (int i = 0; i < 10; i++) {
logger.log("Log message " + i, LogLevel.INFO);
try {
Thread.sleep(50); // Sleep for 5 seconds
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

View File

@ -0,0 +1,130 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package common;
/**
*
* @author tange
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
public class VSWhereUtil {
/**
* 从指定的起始目录开始逐层向上查找 vswhere.exe
*
* @param startDir 起始目录
* @return vswhere.exe 的绝对路径
* @throws RuntimeException 如果未找到 vswhere.exe
*/
private static String findVswhereExe(File startDir) {
File currentDir = startDir;
while (currentDir != null) {
File vswhereFile = new File(currentDir, "vswhere.exe");
if (vswhereFile.exists() && vswhereFile.isFile()) {
return vswhereFile.getAbsolutePath();
}
currentDir = currentDir.getParentFile(); // 向上一级目录
}
throw new RuntimeException("未找到 vswhere.exe请确保该文件存在于程序目录或上层目录中。");
}
private static String getVcvarsPath() throws IOException, InterruptedException {
String vswhereDir=findVswhereExe(new File(System.getProperty("user.dir")));
ProcessBuilder processBuilder = new ProcessBuilder(vswhereDir,
"-latest",
"-products", "*",
"installationPath",
"-find", "**/vcvars64.bat");
processBuilder.redirectErrorStream(true); // 合并标准错误输出
Process process = processBuilder.start();
List<String> output = new ArrayList<>();
try (Scanner scanner = new Scanner(process.getInputStream())) {
while (scanner.hasNextLine()) {
output.add(scanner.nextLine());
}
}
process.waitFor();
if (!output.isEmpty()) {
return output.get(0);
}
return null;
}
public static String findClExePath() {
// 获取当前工作目录
File currentDir = new File(System.getProperty("user.dir"));
// 查找 vswhere.exe 路径
String vswherePath = findVswhereExe(currentDir);
String clExeDir = null;
try {
// 构建命令行调用 vswhere.exe
ProcessBuilder processBuilder = new ProcessBuilder(vswherePath,
"-latest",
"-products", "*",
"-requires", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
"-find", "**/Hostx64/x64/cl.exe");
// 设置工作目录为当前程序目录
processBuilder.directory(new File(System.getProperty("user.dir")));
// 启动进程
Process process = processBuilder.start();
// 读取命令行输出
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
if (line.endsWith("cl.exe")) {
clExeDir = line.substring(0, line.lastIndexOf("cl.exe"));
break;
}
}
reader.close();
process.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
return clExeDir;
}
public static String getMsvcCompilerCommand(){
try {
return "cmd.exe /c call \""+getVcvarsPath()+"\" && \"$compilerPath$/cl.exe\" \"$sourceFile$\" /O2 /Fe:\"$exeFile$\"";
} catch (IOException ex) {
Logger.getLogger(VSWhereUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (InterruptedException ex) {
Logger.getLogger(VSWhereUtil.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
public static String getMsvcLinkCommand(){
return "cmd.exe /c";
}
public static void main(String[] args) {
String clPath = findClExePath();
if (clPath != null) {
System.out.println("cl.exe 目录路径: " + clPath);
System.out.println(getMsvcCompilerCommand());
} else {
System.out.println("未找到 cl.exe 路径");
}
}
}

View File

@ -18,6 +18,9 @@ public class SolutionBean {
Integer userId;
Date submitTime;
String language;
//NEW
String compiler;
//
String SourceCode;
Integer codelength;
String status;
@ -27,6 +30,7 @@ public class SolutionBean {
Float score;
String remark;
public SolutionBean() {
this.id = 1;
this.examId = 1;
@ -34,6 +38,7 @@ public class SolutionBean {
this.userId = 1;
this.submitTime = new Date();
this.language = "";
this.compiler="";
this.SourceCode = "";
this.codelength = 3;
this.status = "";
@ -43,6 +48,13 @@ public class SolutionBean {
this.score = 1f;
this.remark = "";
}
public void setCompiler(String compiler){
this.compiler=compiler;
}
public String getCompiler(){
return compiler;
}
public Integer getId() {
return id;

BIN
JuderUI/Main.obj Normal file

Binary file not shown.

82
JuderUI/OJWS.java Normal file
View File

@ -0,0 +1,82 @@
package edu.dhu.ws;
public interface OJWS {
//测试
public String test(String message);
// 将登陆人的信息转换成xml格式
public String wsLogin(String userName, String userPassword);
// 将考试列表转换成xml格式
public String wsGetExamList(String userName, String password);
// 通过Id将考试列表转换成xml格式
public String wsGetExamById(String userName, String password, int examId);
// 根据problemId查出problems和problemtestcases的相关信息转换成xml格式
public byte[] wsGetProblem(String userName, String password,int examId, int problemId);
// 根据examId查出examProblems的相关信息转换成xml格式
public String wsGetExamProblems(String userName, String password,
int examId, int page, int rows);
// 根据用户名密码examId获取examdetail的相关信息转换成xml格式
public String wsGetExamDetail(String userName, String password, int examId, int page, int rows);
// 根据用户提交的代码对WrongCases,Solution,Problems,StudentExamDetail的相关信息,返回solutionId
public String wsSubmitCode(String userName, String password, String codeXml);
// 提交本题操作
public String wsSubmitThisProblem(String userName, String password,
String codeXml);
// 获取submittedcode的信息用来检查相似度
public String wsSubmittedCode(String userName, String password,
int problemId);
// 查看测试数据,获取wrongcases的信息
public String wsViewWrongCase(String userName, String password,
int examId, int problemId, int caseId, boolean caseInfo);
// 获取最新状态
public String wsGetExamProblemStatus(String userName, String password,
int examId, int problemId);
// 裁判机获取solution等信息
public String wsGetSolutions(String account,String password,int number);
// 更新裁判后返回的结果
public String wsUpdateResult(String userName, String password,byte[] result);
// 是否允许换座
public String wsIsPermit(String userName, String password, int examId,
String UUID);
// 裁判机获取题目信息
public byte[] wsGetProblem4Judge(String userName, String password, int problemId);
// 根据examId获取智能训练题目类别
public String wsGetExamProCatagorys(String userName,String password,int examId);
//智能训练页面点击"开始做题"操作
public String wsCanDoCategory(String userName, String password, int examId);
//智能训练页面点击"我要抽题"操作
public byte[] wsDrawProblem(String userName, String password, int examId,int catId);
//智能训练模块做题记录页面数据
public String wsSubmitHistory(String userName, String password, int examId);
//智能训练模块"提交代码"操作
public String wsItrainSubmitCode(String userName, String password,int catId,String codeXml);
//智能训练模块"暂时跳过本题"操作
public String wsSkipThisProblem(String userName, String password, int examId,int catId,int problemId);
//智能训练模块"提交本题"操作
public String wsItrainSubmitThisProblem(String userName, String password,int catId,String codeXml,String continueTrain);
//智能训练模块"我要通关"操作
public String wsPassThisCategory(String userName, String password, int examId,int catId);
}

View File

@ -1,8 +1,8 @@
#Sat, 13 Jan 2024 20:50:26 +0800
#Thu, 18 Sep 2025 20:27:28 +0800
K\:\\OJ\\JuderUI=
D\:\\oj\\JuderUI=
K\:\\OJ\\Common=
D\:\\oj\\Common=
K\:\\OJ\\Judger=
D\:\\oj\\Judger=

View File

@ -3,4 +3,6 @@
<system systemId="http://47.95.22.126:8080/oj/webservice/OJWS?wsdl" uri="wsdl/47.95.22.126_8080/oj/webservice/OJWS.wsdl"/>
<system systemId="http://127.0.0.1:8080/oj/webservice/OJWS?wsdl" uri="wsdl/127.0.0.1_8080/oj/webservice/OJWS.wsdl"/>
<system systemId="http://106.15.36.190:80/oj/webservice/OJWS?wsdl" uri="wsdl/106.15.36.190_80/oj/webservice/OJWS.wsdl"/>
<system systemId="https://219.228.76.122:443/oj/webservice/OJWS?wsdl" uri="wsdl/219.228.76.122_443/oj/webservice/OJWS.wsdl"/>
<system systemId="https://219.228.76.122:8080/oj/webservice/OJWS?wsdl" uri="wsdl/219.228.76.122_8080/oj/webservice/OJWS.wsdl"/>
</catalog>

View File

@ -872,7 +872,7 @@
</wsdl:binding>
<wsdl:service name="OJWS">
<wsdl:port binding="tns:OJWSSoapBinding" name="OJWSImplPort">
<soap:address location="http://106.15.36.190/oj/webservice/OJWS" />
<soap:address location="https://219.228.76.122:8080/oj/webservice/OJWS" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

View File

@ -17,7 +17,7 @@ import javax.xml.ws.WebServiceFeature;
* Generated source version: 2.2
*
*/
@WebServiceClient(name = "OJWS", targetNamespace = "http://ws.dhu.edu/", wsdlLocation = "http://106.15.36.190:80/oj/webservice/OJWS?wsdl")
@WebServiceClient(name = "OJWS", targetNamespace = "http://ws.dhu.edu/", wsdlLocation = "https://219.228.76.122:443/oj/webservice/OJWS?wsdl")
public class OJWS_Service
extends Service
{
@ -30,7 +30,7 @@ public class OJWS_Service
URL url = null;
WebServiceException e = null;
try {
url = new URL("http://106.15.36.190:80/oj/webservice/OJWS?wsdl");
url = new URL("https://219.228.76.122:443/oj/webservice/OJWS?wsdl");
} catch (MalformedURLException ex) {
e = new WebServiceException(ex);
}

View File

@ -17,7 +17,7 @@ import javax.xml.ws.WebServiceFeature;
* Generated source version: 2.2
*
*/
@WebServiceClient(name = "OJWS", targetNamespace = "http://ws.dhu.edu/", wsdlLocation = "http://106.15.36.190:80/oj/webservice/OJWS?wsdl")
@WebServiceClient(name = "OJWS", targetNamespace = "http://ws.dhu.edu/", wsdlLocation = "https://219.228.76.122:443/oj/webservice/OJWS?wsdl")
public class OJWS_Service
extends Service
{
@ -30,7 +30,7 @@ public class OJWS_Service
URL url = null;
WebServiceException e = null;
try {
url = new URL("http://106.15.36.190:80/oj/webservice/OJWS?wsdl");
url = new URL("https://219.228.76.122:443/oj/webservice/OJWS?wsdl");
} catch (MalformedURLException ex) {
e = new WebServiceException(ex);
}

View File

@ -3,4 +3,6 @@
<system systemId="http://47.95.22.126:8080/oj/webservice/OJWS?wsdl" uri="xml-resources/web-service-references/OJWS/wsdl/47.95.22.126_8080/oj/webservice/OJWS.wsdl"/>
<system systemId="http://127.0.0.1:8080/oj/webservice/OJWS?wsdl" uri="xml-resources/web-service-references/OJWS/wsdl/127.0.0.1_8080/oj/webservice/OJWS.wsdl"/>
<system systemId="http://106.15.36.190:80/oj/webservice/OJWS?wsdl" uri="xml-resources/web-service-references/OJWS/wsdl/106.15.36.190_80/oj/webservice/OJWS.wsdl"/>
<system systemId="https://219.228.76.122:443/oj/webservice/OJWS?wsdl" uri="xml-resources/web-service-references/OJWS/wsdl/219.228.76.122_443/oj/webservice/OJWS.wsdl"/>
<system systemId="https://219.228.76.122:8080/oj/webservice/OJWS?wsdl" uri="xml-resources/web-service-references/OJWS/wsdl/219.228.76.122_8080/oj/webservice/OJWS.wsdl"/>
</catalog>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<languages>
<language id="C++" alias="c++,c,cpp,CPP,C">
<compiler name="MSVC">
<path>D:\裁判机\MSVC</path>
<compileCmd>$compilerPath$/bin/cl.exe /O2 /Fo"$objFile$" /Fe"$exeFile$" /I $compilerPath$\include /EHsc "$sourceFile$" /link /LIBPATH:"$compilerPath$\lib" </compileCmd>
<!-- g++.exe -Wall -g -std=c++14 -c D:\prog_old\test\main.cpp -o obj\Debug\main.o-->
<linkCmd></linkCmd>
<!-- <linkCmd>$compilerPath$/bin/link.exe /OUT:"$exeFile$" "$objFile$" /LIBPATH:"$compilerPath$\lib"</linkCmd> -->
<!-- g++.exe -o bin\Debug\test.exe obj\Debug\main.o -O1-->
<runCmd>$exeFile$</runCmd>
</compiler>
<compiler name="MinGW">
<path>D:\裁判机\MinGW64\bin</path>
<compileCmd>"$compilerPath$\g++" -Wall -g -c -std=c++1y "$sourceFile$" -o "$objFile$"</compileCmd>
<!-- g++.exe -Wall -g -std=c++14 -c D:\prog_old\test\main.cpp -o obj\Debug\main.o-->
<linkCmd>$compilerPath$\g++ "$objFile$" "$exeFile$" -o -O1</linkCmd>
<!-- g++.exe -o bin\Debug\test.exe obj\Debug\main.o -O1-->
<runCmd>$exeFile$</runCmd>
</compiler>
</language>
<language id="Java" alias="java,JAVA">
<compiler name="JDK8">
<path>C:\Program Files\Java\jdk1.8.0_121\bin</path>
<compileCmd>"$compilerPath$/javac" $sourceFile$</compileCmd>
<linkCmd>g++.exe -o $exeFile$ $objFile$ -O1</linkCmd>
<!-- g++.exe -o bin\Debug\test.exe obj\Debug\main.o -O1-->
<runCmd>$exeFile$</runCmd>
</compiler>
</language>
<language id="Python" alias="python,PYTHON,py,PY">
<compiler name="Python3">
<path>F:\裁判机\python3.12</path>
<compileCmd> </compileCmd>
<linkCmd> </linkCmd>
<runCmd>$compilerPath$/python "$sourceFile$"</runCmd>
</compiler>
</language>
</languages>

63
JuderUI/config.xml Normal file
View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<languages>
<language id="C++" alias="c++,cpp,CPP">
<compiler name="MSVC">
<path>.\MSVC</path>
<compileCmd>$compilerPath$/bin/cl.exe /O2 /Fo"$objFile$" /Fe"$exeFile$" /I $compilerPath$\include /EHsc "$sourceFile$" /link /LIBPATH:"$compilerPath$\lib" </compileCmd>
<!-- g++.exe -Wall -g -std=c++14 -c D:\prog_old\test\main.cpp -o obj\Debug\main.o-->
<linkCmd></linkCmd>
<!-- <linkCmd>$compilerPath$/bin/link.exe /OUT:"$exeFile$" "$objFile$" /LIBPATH:"$compilerPath$\lib"</linkCmd> -->
<!-- g++.exe -o bin\Debug\test.exe obj\Debug\main.o -O1-->
<runCmd>$exeFile$</runCmd>
</compiler>
<compiler name="MinGW">
<path>.\MinGW64\bin</path>
<compileCmd>"$compilerPath$\g++" -std=c++1y "$sourceFile$" -o "$exeFile$"</compileCmd>
<!-- g++.exe -Wall -g -std=c++14 -c D:\prog_old\test\main.cpp -o obj\Debug\main.o-->
<linkCmd></linkCmd>
<!-- g++.exe -o bin\Debug\test.exe obj\Debug\main.o -O1-->
<runCmd>.\test\output\Main.exe</runCmd>
</compiler>
</language>
<language id="C" alias="c">
<compiler name="MSVC">
<path>.\MSVC</path>
<compileCmd>$compilerPath$/bin/cl.exe /O2 /Fo"$objFile$" /Fe"$exeFile$" /I $compilerPath$\include "$sourceFile$" /link /LIBPATH:"$compilerPath$\lib" </compileCmd>
<!-- g++.exe -Wall -g -std=c++14 -c D:\prog_old\test\main.cpp -o obj\Debug\main.o-->
<linkCmd></linkCmd>
<!-- <linkCmd>$compilerPath$/bin/link.exe /OUT:"$exeFile$" "$objFile$" /LIBPATH:"$compilerPath$\lib"</linkCmd> -->
<!-- g++.exe -o bin\Debug\test.exe obj\Debug\main.o -O1-->
<runCmd>$exeFile$</runCmd>
</compiler>
<compiler name="MinGW">
<path>.\MinGW64\bin</path>
<compileCmd>"$compilerPath$\gcc" -std=c11 "$sourceFile$" -o "$exeFile$"</compileCmd>
<!-- g++.exe -Wall -g -std=c++14 -c D:\prog_old\test\main.cpp -o obj\Debug\main.o-->
<linkCmd></linkCmd>
<!-- g++.exe -o bin\Debug\test.exe obj\Debug\main.o -O1-->
<runCmd>.\test\output\Main.exe</runCmd>
</compiler>
</language>
<language id="Java" alias="java,JAVA">
<compiler name="JDK8">
<path>.\jdk1.8.0_121\bin</path>
<compileCmd>"$compilerPath$/javac" $sourceFile$</compileCmd>
<linkCmd></linkCmd>
<!-- g++.exe -o bin\Debug\test.exe obj\Debug\main.o -O1-->
<runCmd>$exeFile$</runCmd>
</compiler>
</language>
<language id="Python" alias="python,PYTHON,py,PY">
<compiler name="Python 3.12">
<path>.\python3.12</path>
<compileCmd> </compileCmd>
<linkCmd> </linkCmd>
<runCmd>$compilerPath$/python "$sourceFile$"</runCmd>
</compiler>
</language>
</languages>

View File

@ -1,26 +1,26 @@
#update config.properties
#Sat Jan 13 20:50:27 CST 2024
srcDir=G\:\\org\\JuderUI\\test
isCppRelative=true
relativeJavaCompilerDir=C\:\\Program Files\\Java\\jdk1.8.0_40\\bin
#Wed Feb 19 12:24:17 GMT+08:00 2025
=\=\=\=\=\=\=
<<<<<<<=.mine
>>>>>>>=.r76
Debug=1
JavaCompileDir=C\:\\Program Files\\Java\\jdk1.8.0_121\\bin
JavaRelative=3
MinGWDir=C\:\\MinGW\\bin
MinGWRelative=3
StartThreadAuto=false
ThreadNumber=1
URLaddress=10.202.40.190
Username=felix
cCompilerDir=C\:\\\u65B0\u5EFA\u6587\u4EF6\u5939
ThreadNumber=1
distributorPort=80
exeDir=G\:\\org\\JuderUI\\TMP
MinGWDir=C\:\\MinGW\\bin
relativeCCompilerDir=\\MinGW\\bin
distributorIP=106.15.36.190
JavaRelative=3
>>>>>>>=.r76
isJavaRelative=true
<<<<<<<=.mine
MinGWRelative=3
relativeCppCompilerDir=\\MinGW\\bin
javaCompilerDir=\\\\vmware-host\\Shared Folders\\\u6587\u7A3F\\NetBeansProjects\\oj\\client\\MinGW\\bin
JavaCompileDir=C\:\\Program Files\\Java\\jdk1.8.0_121\\bin
Debug=1
URLaddress=10.202.40.190
StartThreadAuto=true
=\=\=\=\=\=\=
cppCompilerDir=\\\\vmware-host\\Shared Folders\\\u6587\u7A3F\\NetBeansProjects\\oj\\client\\MinGW\\bin
distributorIP=106.15.36.190
distributorPort=8080
exeDir=G\:\\org\\JuderUI\\TMP
isCppRelative=true
isJavaRelative=true
javaCompilerDir=\\\\vmware-host\\Shared Folders\\\u6587\u7A3F\\NetBeansProjects\\oj\\client\\MinGW\\bin
relativeCCompilerDir=\\MinGW\\bin
relativeCppCompilerDir=\\MinGW\\bin
relativeJavaCompilerDir=C\:\\Program Files\\Java\\jdk1.8.0_40\\bin
srcDir=G\:\\org\\JuderUI\\test

Binary file not shown.

Binary file not shown.

BIN
JuderUI/dist/dist.zip vendored

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
build.xml.data.CRC32=dfbf39b8
build.xml.script.CRC32=1513c9b5
build.xml.stylesheet.CRC32=8064a381@1.79.1.48
build.xml.stylesheet.CRC32=f85dc8f2@1.113.0.48
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=dfbf39b8
nbproject/build-impl.xml.script.CRC32=659c39b3
nbproject/build-impl.xml.stylesheet.CRC32=05530350@1.79.1.48
nbproject/build-impl.xml.script.CRC32=e468727d
nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.113.0.48

Some files were not shown because too many files have changed in this diff Show More