Tag: java

使用哪个无限循环

可能重复: “for(;;)”比“while(TRUE)”快吗? 如果没有,为什么人们会使用它? 我一直在阅读作者for(;;)而不是while(true)的编程书(java while(true) 。 这件事真的开始让我烦恼所以我认为我应该检查哪个是最好用的,如果有任何差异。 以下是可能的无限循环: for(;;){ } while(true){ } do{ }while(true) 哪个更喜欢使用? 在表现中是否有任何差异(比如你必须测试在情况下是否为真)或者它们是否编译成同一个东西?

var不会变成全局但仍然是本地的

从下面的代码片段开始,我尝试测试NewGlobalRef并尝试在if块的本地范围内声明它后使clsStr全局。 jstring Java_Package_LocalAndGlobalReference_returnGlobalReference (JNIEnv *env, jobject obj) { if(1) { printf(“In function make global reference\n”); jclass clsStr ; jclass cls = (*env)->FindClass(env,”java/lang/String”); if( cls == NULL) return NULL; // create a global reference of clsStr clsStr = (*env)->NewGlobalRef(env,cls); // Delete the local reference, which is no longer userful (*env)->DeleteLocalRef(env,cls); if(clsStr == NULL) return NULL; } […]

使用我的.jar组合.jar库

我在javaFX中有一个项目,我正在使用ControllerFX库,这里的问题在.jar文件中,我必须使用我的.jar项目保存库的.jar文件。 有没有办法使用intellij想法将库的.jar与项目的.jar结合起来? Maven在这种情况下有帮助吗? (我不知道maven究竟能做什么)感谢答案

无法将Java客户端连接到C服务器

我有一个用C编写的非常简单的服务器和一个用Java编写的同样简单的客户端。 当我在同一台计算机上运行它们时,一切正常,但是当我尝试在计算机A和计算机B上的客户机上运行服务器时,我从java客户端收到错误IOException连接被拒绝 。 我似乎无法找出发生了什么,有什么想法吗? 我甚至关闭了防火墙,但问题仍然存在。 服务器。 #include #include #include #include #include #include #define PORT 3557 #define BUF 256 int main(int argc, char *argv[]) { struct sockaddr_in host, remote; int host_fd, remote_fd; int size = sizeof(struct sockaddr);; char data[BUF]; host.sin_family = AF_INET; host.sin_addr.s_addr = htonl(INADDR_ANY); host.sin_port = htons(PORT); memset(&host.sin_zero, 0, sizeof(host.sin_zero)); host_fd = socket(AF_INET, SOCK_STREAM, 0); […]

C结构到Java JNA结构(指向struct的指针)

我有基于C / C ++结构的JNA结构的问题。 字段nScreenIndex,uVendorID,uProductID,uVersionNumber看起来没问题,但在它们之后我看到奇数字节。 我的主要目标是“提取”pMonitor字段。 pMonitor声明和MONITOR实现是否正确? C / C ++起源: SCREEN* EloGetScreenByIndex (int nScreenIndex); typedef struct SCREEN_TAG { int nScreenIndex; USHORT uVendorID; USHORT uProductID; USHORT uVersionNumber; wchar_t szDevicePath [MAX_PATH]; HANDLE hCalTouchThread; MONITOR* pMonitor; LPVOID pCWndBeamHandler; BOOL bIrBeams; } SCREEN; typedef struct MONITORS_TAG { int elo_mon_num; int x; int y; int width; int height; DWORD […]

从JNA / C调用DLL与Pascal的结果不一致

我有一个提供头文件的c ++ dll库,没有实现。 我为这个库函数实现了JNA调用。 我只有1个function的问题(其他,甚至类似的工作正常)。 这是来自.h文件的声明: int CALLINGCONV SMIMESignML( const char* pin, unsigned long slot, const char* szOutputFilePath, const char* szFrom, const char* szTo, const char* szSubject, const char* szOtherHeaders, const char* szBody, const char* szAttachments, unsigned long dwFlags, int bInitialize ); Java代码: public interface Dll extends StdCallLibrary { public String JNA_LIBRARY_NAME = “libname.dll”; int […]

JNA ByteBuffer statvfs

我试图使用java中的statvfs调用获取/文件夹上的可用空间, 我从c中检查了statvfs struct的大小,它显示了44个字节,我已经使用java.nio.ByteBuffer.allocateDirect 44字节分配了一个字节缓冲区,并且它的顺序设置为44个字节。 当我调用statvfs我得到一个返回值为0,所以我假设调用成功,但我似乎无法从使用buffer.getInt获取ByteBuffer的信息返回512 f_bsize这是正确但但之后我无法读取。 buffer.getInt(12)应该给我f_blocks,但我得到0。 unsigned long f_bsize; /* File system block size */ unsigned long f_frsize; /* Fundamental file system block size */ fsblkcnt_t f_blocks; /* Blocks on FS in units of f_frsize */ 或者我的逻辑有错吗?

如何使用Java中基于信号处理的机制捕获JNI崩溃作为exception

我开发了一个Java工具,它有很多JNI函数,我经常遇到JNI崩溃。 有没有可能避免这些崩溃或抓住这些崩溃作为例外。 我上网冲浪,发现它可以通过信号处理,信号通道,sigaction()等等。但我无法获得可靠的信息来指导我。 请指导我这个。

C服务器和Java客户端之间的UDP连接

我有另一个问题:)我在C中有一个简单的UDP服务器读取一些字节对这些字节应用一些解码,当它有一个forms的字符串### @ #### @ ### @ ### he通过UDP将它发送到C中的另一个服务器。这是我的C服务器的代码,称为preprocesamiento.c我发布整个事情cos是easyer但也许这与我的问题无关。 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAXBUF 512 #define SENDING 0x52 #define RESIVING 0xB4 #define TYPE 0xA3F0 int createSocket(); char *unbase64(unsigned char *input, int length); /* This function recives bytes(ASCII numbers) and returns the char */ void […]

从Java程序编译C代码

我正在尝试以下代码来编译带有Java程序的外部C程序 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public static void main(String[] args){ try{ Runtime rt=Runtime.getRuntime(); Process pr=rt.exec(“cmd /c PATH=%PATH%;c:\\TC\\BIN”); pr=rt.exec(“cmd /cc:\\TC\\BIN\\TCC.exe c:\\TC\\EXAMPLE.c”); pr=rt.exec(“c:\\TC\\EXAMPLE.exe”); BufferedReader input=new BufferedReader(new InputStreamReader(pr.getInputStream())); String line=null; while((line=input.readLine())!=null){ System.out.println(line); } int exitVal=pr.waitFor(); System.out.println(“exited with error code “+exitVal); } catch(Exception e){ System.out.println(e.toString()); //e.printStackTrace(); } } } 但我得到了: java.io.IOException:无法运行程序“c:\ TC \ EXAMPLE.exe”:CreateProcess error = 2,系统找不到指定的文件 […]