一直在关注这个关于 RMI for Java 的教程,试图将它翻译成 Scala。而不是interface我使用trait, 并且我注释方法来指示RemoteException.
实现了所有内容,并进入编译步骤并完全遵循它,除了javac我使用scalac.
最后在激动人心的最后一步,运行它,我设置安全策略,启动rmiregistry,去启动我的服务器并得到这个:
java.rmi.ServerError: Error occurred in server thread; nested exception is:
java.lang.NoClassDefFoundError: scala/Serializable
Run Code Online (Sandbox Code Playgroud)
什么可能导致这种情况?我将他们的命令从 更改java为scala,但其他所有内容都相同(以用户名和文件路径为模)。怎么找不到scala/Serializable?
可能相关:
$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (rhel-1.49.1.11.4.el6_3-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
$ scala -version
Scala code runner version 2.9.2 -- Copyright 2002-2011, …Run Code Online (Sandbox Code Playgroud) 好了,所以我有一个类SomeClass是Parcelable.
它有一个Parcelable名为的另一个类的数组SuperClass.在我的构造函数中SomeClass,我试图将SuperClass对象数组读入myArray实例变量中.这很简单; 然而:
SuperClass有两个子类FirstSubClass和SecondSubClass.该数组temp应该是所有3的混合,但由于某种原因它只有SuperClass对象(if和else if语句似乎没有执行,因为没有temp子类的实例的元素).
public SomeClass(Parcel in) {
myArray = new SuperClass[100];
// this is probably where the problem is due to the classloader parameter:
Object[] temp = in.readArray(SuperClass.class.getClassLoader());
for(int i = 0; i < myArray.length; i++) {
if(temp[i] instanceof FirstSubClass)
myArray[i] = (FirstSubClass) temp[i];
else if(temp[i] instanceof SecondSubClass)
myArray[i] …Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,它需要将目录信息从一个客户端发送到网络上的另一个客户端。那么告诉我,我可以通过仅发送文件类对象来在另一个客户端上获取此信息吗?请解释一下您选择“是”或“否”的原因。
更新的问题
我正在发布我尝试过的代码......
客户代码:-
public class FileClient{
public static void main(String str[]){
try{
Socket sock = new Socket("10.16.10.82",4000);
/* Socket sock = new Socket("127.0.0.1",4000); */ //for localhost
File f = new File("MyFile.txt");
ObjectOutputStream os = new ObjectOutputStream(sock.getOutputStream());
os.writeObject(f);
os.flush();
os.close();
System.out.println("object sent");
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下是服务器代码:-
class FileServer{
public static void main(String str[]){
try{
ServerSocket sock = new ServerSocket(4000);
while(true){
Socket cs = sock.accept();
ObjectInputStream in = new ObjectInputStream(cs.getInputStream());
File f = (File)in.readObject();
System.out.println(f.isDirectory());
System.out.println(f.length()+" bytes …Run Code Online (Sandbox Code Playgroud) 当我在CMD窗口中执行我的代码时,它在客户端模式下无法正常工作,完全在以下行:
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
Run Code Online (Sandbox Code Playgroud)
此行上的程序块但不停止或发出错误信号:
我有3类:Client,Server,Message
package client;
// Organize imports
public class Client {
public static void main(String[] args) throws UnknownHostException,
IOException, ClassNotFoundException {
System.out.println("welcome client");
Socket socket = new Socket("localhost", 4444);
System.out.println("Client connected");
ObjectOutputStream os = new ObjectOutputStream(socket.getOutputStream());
System.out.println("Ok");
Message message = new Message(new Integer(15), new Integer(32));
os.writeObject(message);
System.out.println("Envoi des informations au serveur ...");
ObjectInputStream is = new ObjectInputStream(socket.getInputStream());
Message returnMessage = (Message) is.readObject();
System.out.println("return …Run Code Online (Sandbox Code Playgroud) 我们开发非常常见的 Spring MVC 应用程序
我们有:
控制器层(@RestComtroller+@GetMapping和@PostMapping)
服务层(@Service)
存储库层(CrudRepository来自spring-data-jpa)
我们使用 DTO 来进行 FE 和 BE 之间的通信。
今天我的同事让我将所有 DTO 标记为implements Serializable并添加serialVersionUID字段。我询问原因,但他说这是“最佳实践”。我对此真的很困惑。Serializable与 java 序列化相关,但我们使用 JSON 进行 BE 和 FE 通信。
你能澄清一下这个问题吗?那么我应该用 Serialized 标记 spring mvc DTO 吗?
嗨,我有一个类的问题,我想通过把它放入putExtras()传递一个意图它的可序列化和代码看起来像这样:
public abstract class ObjectA extends ArrayList<ObjectA> implements java.io.Serializable{...}
public class ObjectB extends ObjectA {...}
...
Bundle extras = new Bundle();
extras.putSerializable("blabla", ObjectB);
intent.putExtras(extras);
...
Object y = getIntent().getExtras().get("blabla");
Run Code Online (Sandbox Code Playgroud)
问题是,y现在是一个ArrayList而不再是ObjectB,所以我不能把它转换..如果我将代码更改为
public class ObjectB implements java.io.Serializable {...}
Run Code Online (Sandbox Code Playgroud)
它工作正常
所以从我收集的内容来看,Socket连接既不是可序列化的也不是可分配的,但我需要将蓝牙连接传递给另一个Activity.我不想写服务作为中间人,所以请不要将其作为解决方案发布.我听说有一种方法可以使用自定义应用程序界面传递这些类型的对象,但我不能,在我的生活中,找到一个有效的例子.我已经看到很多文档说"这是可能的",但没有任何显示如何做到这一点.
我想知道以下示例类的属性将序列化的顺序:
public class Example implements Serializable {
private static final long serialVersionUID = 8845294179690379902L;
public int score;
public String name;
public Date eventDate;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
为什么我想知道这个:
我在我的一个类的文件中得到了一个序列化字符串,它没有readObject()或writeObject()的实现.现在实现已更改(某些属性已消失),我想编写一个处理旧序列化类的readObject()方法.
在那里,我只是阅读这个属性,但不会将其保存到创建的对象.
这基本上只适用于遗产我现在使用数据库但需要支持旧的序列化文件.
写这个readObject()我需要流中的属性顺序.
我试图在一个简单的Web应用程序中实现Hazelcast.
我正在尝试将自定义对象存储到我的Hazelcast地图中,并在我的出价对象类中实现了Serializable以及必要的导入.
import java.io.Serializable;
Run Code Online (Sandbox Code Playgroud)
这是类对象的片段.
public class Bid implements Serializable{
private String bidId;
private String stock;
private int price;
private String userId;
private Date date;
Run Code Online (Sandbox Code Playgroud)
以下是将Bid对象存储到Map中的语法,其中newBid是Bid对象.
Config cfg = new Config();
HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
Map<String, Bid> mapBids = instance.getMap("bids");
mapBids.put(newBid.getUserId(), newBid);
Run Code Online (Sandbox Code Playgroud)
我的Hazelcast节点已启动并正在运行,但当我查询出价图时,出现以下错误.
com.hazelcast.nio.serialization.HazelcastSerializationException: java.lang.Class
NotFoundException: aa.Bid
at com.hazelcast.nio.serialization.DefaultSerializers$ObjectSerializer.r
ead(DefaultSerializers.java:190)
at com.hazelcast.nio.serialization.StreamSerializerAdapter.read(StreamSe
rializerAdapter.java:59)
at com.hazelcast.nio.serialization.SerializationServiceImpl.toObject(Ser
ializationServiceImpl.java:221)
at com.hazelcast.spi.impl.NodeEngineImpl.toObject(NodeEngineImpl.java:15
6)
at com.hazelcast.map.MapService.toObject(MapService.java:773)
at com.hazelcast.map.proxy.MapProxyImpl.entrySet(MapProxyImpl.java:502)
at com.hazelcast.examples.TestApp.handleMapEntries(TestApp.java:882)
at com.hazelcast.examples.TestApp.handleCommand(TestApp.java:371)
at com.hazelcast.examples.TestApp.start(TestApp.java:187)
at com.hazelcast.examples.TestApp.main(TestApp.java:1641)
Caused by: java.lang.ClassNotFoundException: aa.Bid
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown …Run Code Online (Sandbox Code Playgroud) 我试图理解以下代码。
//文件:LambdaTest.java
package test;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
public class LambdaTest implements Ops {
public static void main(String[] args) {
new LambdaTest().job();
}
public void job() {
SparkConf conf = new SparkConf()
.setAppName(LambdaTest.class.getName())
.setMaster("local[*]");
JavaSparkContext jsc = new JavaSparkContext(conf);
List<Integer> lst = Arrays.asList(1, 2, 3, 4, 5, 6);
JavaRDD<Integer> rdd = jsc.parallelize(lst);
Function<Integer, Integer> func1 = (Function<Integer, Integer> & Serializable) x -> x * x;
Function<Integer, Integer> func2 = x …Run Code Online (Sandbox Code Playgroud) serializable ×10
java ×8
android ×3
sockets ×2
apache-spark ×1
arraylist ×1
dto ×1
file-io ×1
handler ×1
hazelcast ×1
ipc ×1
json ×1
lambda ×1
map ×1
parcelable ×1
rmi ×1
scala ×1
spring-mvc ×1