关于eclipse的"serializing cdt project settings"解决方案

本文详细介绍了使用Eclipse作为Cocos2dx的交叉编译工具时遇到的问题,即打开项目提示‘serializingcdtprojectsettings’出现问题,导致项目无法正常打开。通过对比发现并修复关键文件.cproject中的错误配置,成功解决了问题。

最近在使用eclipse作为cocos2dx的交叉编译工具。但是某天突然相关工程打不开,打开eclipse直接提示

“serializing cdt project settings” has encountered a problem 

然后就是项目工程打不开了,熟悉cocos2dx开发流程的人,都知道建立一个android工程也不是太简单,很方便,关键是这个问题是第二次出现,

非常恶心,所以想了一会,看了一下项目底下的文件,

1、CDT 是支持c++相关的

2、文件修改时间,

最后锁定了.cproject

通过第三方对比工具,比对另外一个正常打开的工程项目,发现了一些区别。


一个是开头的

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>


<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">

注意排版好格式


接着下面一段

<cconfiguration id="0.1230402123.1377291156">
			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.1230402123.1377291156" moduleId="org.eclipse.cdt.core.settings" name="Debug">
				<externalSettings/>
				<extensions>
					<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
				</extensions>
			</storageModule>
			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
		</cconfiguration>

把这一段删除,保存,再打开eclipse,ok了。





### 非数据库存储方案在桌面端软件中的实现 对于桌面应用程序,除了使用数据库存储数据外,还有多种非数据库的存储方案可供选择。这些方案可以满足不同场景下的需求,例如轻量级数据存储、文件系统操作或序列化技术等。 #### 1. 文件系统存储 通过将数据以结构化的格式保存到文件中,可以实现简单的数据存储功能。常见的文件格式包括JSON、XML和CSV等。 ```java import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; public class FileSystemStorageExample { public static void saveDataToFile(String filePath, List<String> data) { try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(filePath))) { for (String item : data) { writer.write(item); writer.newLine(); } } catch (IOException e) { System.err.println("Error saving data to file: " + e.getMessage()); } } public static List<String> loadDataFromFile(String filePath) { List<String> data = new ArrayList<>(); try (BufferedReader reader = Files.newBufferedReader(Paths.get(filePath))) { String line; while ((line = reader.readLine()) != null) { data.add(line); } } catch (IOException e) { System.err.println("Error loading data from file: " + e.getMessage()); } return data; } public static void main(String[] args) { String filePath = "data.txt"; List<String> dataToSave = List.of("Item 1", "Item 2", "Item 3"); saveDataToFile(filePath, dataToSave); // 保存数据 List<String> loadedData = loadDataFromFile(filePath); // 加载数据 System.out.println("Loaded Data: " + loadedData); } } ``` 上述代码展示了如何通过文件系统存储和读取数据[^5]。 #### 2. 序列化与反序列化 Java对象可以通过序列化机制保存到文件中,并在需要时进行反序列化恢复对象状态。 ```java import java.io.*; import java.util.ArrayList; import java.util.List; class SerializableData implements Serializable { private List<String> items; public SerializableData(List<String> items) { this.items = items; } public List<String> getItems() { return items; } } public class SerializationExample { public static void serializeObject(String filePath, SerializableData data) { try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath))) { oos.writeObject(data); } catch (IOException e) { System.err.println("Error serializing object: " + e.getMessage()); } } public static SerializableData deserializeObject(String filePath) { SerializableData data = null; try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filePath))) { data = (SerializableData) ois.readObject(); } catch (IOException | ClassNotFoundException e) { System.err.println("Error deserializing object: " + e.getMessage()); } return data; } public static void main(String[] args) { String filePath = "serialized_data.ser"; List<String> items = new ArrayList<>(); items.add("Item A"); items.add("Item B"); SerializableData dataToSerialize = new SerializableData(items); serializeObject(filePath, dataToSerialize); // 序列化对象 SerializableData deserializedData = deserializeObject(filePath); // 反序列化对象 System.out.println("Deserialized Data: " + deserializedData.getItems()); } } ``` 此示例说明了如何使用Java的序列化功能来保存和恢复对象状态[^6]。 #### 3. 属性文件(Properties File) 属性文件是一种简单的键值对存储方式,适合用于配置信息的存储。 ```java import java.io.*; import java.util.Properties; public class PropertiesFileExample { public static void saveProperties(String filePath, Properties properties) { try (FileOutputStream fos = new FileOutputStream(filePath)) { properties.store(fos, "Sample Properties File"); } catch (IOException e) { System.err.println("Error saving properties: " + e.getMessage()); } } public static Properties loadProperties(String filePath) { Properties properties = new Properties(); try (FileInputStream fis = new FileInputStream(filePath)) { properties.load(fis); } catch (IOException e) { System.err.println("Error loading properties: " + e.getMessage()); } return properties; } public static void main(String[] args) { String filePath = "config.properties"; Properties propertiesToSave = new Properties(); propertiesToSave.setProperty("username", "JohnDoe"); propertiesToSave.setProperty("password", "s3cr3t"); saveProperties(filePath, propertiesToSave); // 保存属性 Properties loadedProperties = loadProperties(filePath); // 加载属性 System.out.println("Loaded Properties: " + loadedProperties); } } ``` 这段代码演示了如何使用属性文件来存储和读取配置数据[^7]。 ### 总结 以上三种方法提供了不同的非数据库存储解决方案,适用于不同的应用场景。文件系统存储适合于结构化数据,序列化适合于复杂对象的状态保存,而属性文件则更适合配置信息的管理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值