Directly using VirtualBox from Java #5
3 changed files with 33 additions and 4 deletions
10
README.md
10
README.md
|
@ -15,12 +15,12 @@ I plan on making a series where I show the whole process of creating this projec
|
||||||
*If you don't meet these requirements, you may need to compile the files for yourself. If you do please send the compiled version to me so more people can download it.*
|
*If you don't meet these requirements, you may need to compile the files for yourself. If you do please send the compiled version to me so more people can download it.*
|
||||||
|
|
||||||
* OS X; Ubuntu 16.04/18.04
|
* OS X; Ubuntu 16.04/18.04
|
||||||
* VirtualBox 5.2
|
* VirtualBox 6.0
|
||||||
* Spgiot/Bukkit 1.8/1.9/1.12
|
* Spgiot/Bukkit 1.8/1.9/1.12
|
||||||
* Java 8
|
* Java 8
|
||||||
|
|
||||||
### Untested:
|
### Untested:
|
||||||
* Any Linux versions
|
* Other Linux versions
|
||||||
* Other VirtualBox versions (code modifications are probably necessary)
|
* Other VirtualBox versions (code modifications are probably necessary)
|
||||||
* Other Spigot/Bukkit versions
|
* Other Spigot/Bukkit versions
|
||||||
* Other Java versions
|
* Other Java versions
|
||||||
|
@ -66,3 +66,9 @@ Due to the way it works, it automatically plays every sound from the virtual mac
|
||||||
### Special thanks:
|
### Special thanks:
|
||||||
* The creators of VirtualBox for making it open-source and kind of easy to use (though I had minor issues as the documentation doesn't really tell me how to write a new frontend :P and that I needed to learn how machines work - especially keyboards)
|
* The creators of VirtualBox for making it open-source and kind of easy to use (though I had minor issues as the documentation doesn't really tell me how to write a new frontend :P and that I needed to learn how machines work - especially keyboards)
|
||||||
* @iiegit for testing and more testing for the non-Windows version
|
* @iiegit for testing and more testing for the non-Windows version
|
||||||
|
|
||||||
|
# Known issues
|
||||||
|
## Port remains open (cannot bind to port)
|
||||||
|
**Fix:** Close all VirtualBox instances and wait 10 seconds.
|
||||||
|
|
||||||
|
**Cause:** Possibly it happens because the plugin creates the VBoxSVC process, which thus inherits file descriptors such as the open server port.
|
||||||
|
|
|
@ -87,5 +87,10 @@
|
||||||
<artifactId>jnr-ffi</artifactId>
|
<artifactId>jnr-ffi</artifactId>
|
||||||
<version>2.1.7</version>
|
<version>2.1.7</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.aparapi</groupId>
|
||||||
|
<artifactId>aparapi</artifactId>
|
||||||
|
<version>1.10.0</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
|
@ -1,19 +1,37 @@
|
||||||
package sznp.virtualcomputer;
|
package sznp.virtualcomputer;
|
||||||
|
|
||||||
|
import com.aparapi.Kernel;
|
||||||
|
import com.aparapi.Range;
|
||||||
import com.sun.jna.Native;
|
import com.sun.jna.Native;
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import jnr.ffi.LibraryLoader;
|
import jnr.ffi.LibraryLoader;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class Test {
|
public class Test {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.out.println(new File("").getAbsolutePath());
|
/*System.out.println(new File("").getAbsolutePath());
|
||||||
PXCLib pxc = LibraryLoader.create(PXCLib.class).search(new File("").getAbsolutePath()).load("pxc");
|
PXCLib pxc = LibraryLoader.create(PXCLib.class).search(new File("").getAbsolutePath()).load("pxc");
|
||||||
ByteBuffer bb = ByteBuffer.allocateDirect(2);
|
ByteBuffer bb = ByteBuffer.allocateDirect(2);
|
||||||
long[] x = new long[]{Pointer.nativeValue(Native.getDirectBufferPointer(bb))};
|
long[] x = new long[]{Pointer.nativeValue(Native.getDirectBufferPointer(bb))};
|
||||||
pxc.convert(new int[]{5, 10}, x);
|
pxc.convert(new int[]{5, 10}, x);
|
||||||
System.out.println(bb.get(0)); //19 AYY //TO!DO: Use setSource, we don't want to wrap the native array
|
System.out.println(bb.get(0)); //19 AYY //TO!DO: Use setSource, we don't want to wrap the native array*/
|
||||||
|
//final int[] a={5,6,8,2,3,10,5,26,5,416,41,85,416,41};
|
||||||
|
//final int[] b={10,80,10,3,32,20,56,85,51,968,156,5894,10,60,52};
|
||||||
|
final int[] a={5,6};
|
||||||
|
final int[] b={10,80};
|
||||||
|
final int[] res=new int[a.length];
|
||||||
|
Kernel kernel=new Kernel() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
int i=getGlobalId();
|
||||||
|
//System.out.println(i);
|
||||||
|
res[i]=a[i]+b[i];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
kernel.execute(Range.create(res.length));
|
||||||
|
System.out.println(Arrays.toString(res));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue